Keras 中的 LSTM 如何访问输入?



我对 LSTM 如何处理输入有点困惑。 众所周知,LSTM 模型在 Keras 中的输入形式为 (batch_size、时间步长input_dim(。 我的数据是一个时间序列数据,其中 n 个时间步长的每个序列都被输入以预测 n+1 个时间步长的值。那么,他们如何访问输入?他们处理序列中的每个时间步长还是同时访问所有时间步长? 当我检查每个 LSTM 层的参数数量时。它们有 4*d*(n+d(,其中 n 是输入的维度,d 是存储单元的数量。 在我的例子中,我有 d=10,参数的数量是 440(没有偏差(。所以这里的意思是 n=1,所以似乎输入的维度为 1*1。 然后他们可以自发地访问所有这些。 有人对此有一些想法吗?

首先,考虑一个卷积层(它更容易(。

它的参数仅取决于"过滤器大小"、"输入通道"和"过滤器数量"。但从不关于"图像的大小"。

发生这种情况是因为它在某种程度上是一种"步行操作"。同一组滤镜将应用于整个图像。总操作数随图像大小的增加而增加,但仅定义筛选器的参数与图像大小无关。(想象一个过滤器来检测一个圆圈,这个过滤器不需要改变来检测图像不同部分的圆圈,尽管它应用于整个图像中的每个步骤(。

所以:

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

对于 LSTM 层,也会发生类似的事情。这些参数与它们所谓的"门"有关。(看这里(

有一个"状态">

和"门",在每次迭代中应用以确定状态将如何变化。

不过,大门与时间无关。计算确实是时间迭代,但每次迭代都使用相同的门组。

与卷积层相比:

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

最新更新