首页 > 解决方案 > LSTM 在实践中如何利用输入数据?

问题描述

我正在学习神经网络,我正在尝试使用 Keras 实现和理解 LSTM 和其他循环神经网络。

我一直试图通过阅读文章和书籍来理解它们,特别是:this . 但我无法将理论与实际例子联系起来。

例如,我有时间序列数据,我已将其重新格式化为一个三维数组。我的数组大小为 (12000,60,1),目标是预测下一步。我的理解是我的时间步长是 60。

LSTM 结构如何利用这些数据,尤其是时间步长?

我目前的想法是,参考该图,LSTM 采用第一个 60 步数组并将第一个元素用作 X_0,然后它“执行 LSTM 单元所做的操作”并将更新的单元状态传递到下一个单元输入X_1并重复该过程。

在此处输入图像描述

现在,当 60 个元素中的每一个元素都通过了它们的每个单元格时,我们就有了 60 个节点(h0 到 h59),然后将这些节点馈入输出节点以预测下一步。最终的单元状态是下一个数组的第一个单元状态,并且下一个 60 的数组以相同的方式运行。

这是正确的吗?我怀疑我的理解,特别是最终的单元状态是否被传送到下一个数组。

如果所有这些都是正确的,那么相对于我的理解,LSTM(50) 中的 50 表示什么?

标签: kerasneural-networklstm

解决方案


是的,您的解释是正确的,状态会跨时间步长保持和更新。

LSTM层的第一个参数是神经元的数量,或者更好地说,是输出的维数和隐藏状态。请记住,隐藏状态是一个向量,从输入到隐藏状态、隐藏到隐藏状态(循环)和隐藏状态到输出的内部权重矩阵的维数由该参数确定。

因此,在一个Dense层中,aLSTM(50)将有一个 50 维的输出向量,另外循环层的隐藏状态也将是 50 维。


推荐阅读