Keras:LSTM的分类与连续输入

时间:2018-06-04 01:57:04

标签: python keras deep-learning lstm keras-layer

我是Keras和深度学习的新手,在完成了有关stackoverflow的几个教程和答案后,我仍然不清楚进入网络后如何操作输入。

我正在使用keras的功能API来开发复杂的模型,所以我的第一层总是输入层。 类似的东西:

  

输入()

     

LSTM()

     

密集()

现在假设我有2个训练数据集A和B.每个数据集相同的10,000乘6,000个矩阵,其中包含200个不同的值。即10,000行,每行代表训练样例和6,000个时间步骤序列。两者中的值是[[3,50,1,22,7,5,3,1,5,..],[55,32,54,21,15,...],....] A和B之间的唯一区别是A中的值是实数(连续变量),值B是谨慎的(分类变量)。

我有以下3种可能的选项,我可以用来区分分类和连续输入,并想知道哪些可行,哪些比其他更好。

1-给定A是实值,B是分类,将A转换为.astype(浮点),B转换为.astype(浮点)并馈送到网络,网络将相应地采用。

2-鉴于B具有分类值,将B转换为一个热矢量设置,即将10,000乘以6,000变为10,000乘以6,000乘200.保持A原样。

3-如果我们使用B,则在输入后添加嵌入层,并使网络像:

  

输入()

     

嵌入()

     

LSTM()

     

密集()

如果我们使用A,则不要添加嵌入层。

1 个答案:

答案 0 :(得分:1)

似乎分类输入让你感到困惑。嵌入或不嵌入:

  1. 我们在两种情况下使用嵌入层嵌入分类输入:减小空间的维度并捕获输入之间的任何相似性。因此,当您在一种语言中拥有数十亿个单词时,嵌入300维向量以使其易于管理是有意义的。但是,一热也总是给出最大的区别,所以在你的情况下,每个说法200不是很多,而且一个热点是要走的路。
  2. 对于连续输入,我们经常使用简单的最大最小值归一化归一化,因此max变为1而min变为0.但是根据数据集的性质,有很多方法可以做到这一点。
  3. 对于实际模型,您可以使用2个输入处理连续和分类不同的输入,也可以共享上游层,否则创建2个不同的模型可能有意义。
  4. 您可以找到涵盖输入编码的更多信息online