Keras中的LSTM如何访问输入?

时间:2017-07-07 11:37:02

标签: python keras lstm

我对LSTM处理输入的方式有点困惑。 众所周知,Keras中LSTM模型的输入格式为(batch_size,timesteps,input_dim)。 我的数据是时间序列数据,其中n个时间步长的每个序列被馈入以预测n + 1个时间步长的值。然后,他们如何访问输入?他们处理序列中的每个步骤或同时访问所有步骤? 当我检查每个LSTM层的参数数量时。它们具有4 * d *(n + d),其中n是输入的维数,d是存储单元的数量。 在我的情况下,我有d = 10,参数的数量是440(没有偏差)。所以这意味着n = 1,所以看起来输入的维度为1 * 1。 然后他们可以自由地访问所有这些。 有人对此有一些想法吗?

1 个答案:

答案 0 :(得分:1)

首先,想一下卷积层(它更容易)。

它的参数仅取决于“过滤器大小”,“输入通道”和“过滤器数量”。但从来没有“图像的大小”。

发生这种情况是因为它有点像“行走操作”。在整个图像中应用相同的滤镜组。总操作随着图像的大小而增加,但仅定义过滤器的参数与图像大小无关。 (想象一下用于检测圆形的滤镜,此滤镜不需要更改以检测图像不同部分中的圆圈,尽管它适用于整个图像中的每个步骤)。

所以:

  • 参数:过滤器数量*过滤器大小²*输入通道
  • 计算步骤:图像大小(考虑步幅,填充等)

使用LSTM图层,会发生类似的事情。这些参数与他们称之为“门”的内容有关。 (Take a look here

每次迭代都会应用“状态”和“门”,以确定状态将如何变化。

然而,大门不依赖于时间。计算确实是时间迭代,但每次迭代都使用相同的门组。

与卷积层相比:

  • 参数:单元格数,数据维度
  • 计算步骤:时间步骤