【问题标题】:How do LSTMs utilize input data in practice?LSTM 在实践中如何利用输入数据?
【发布时间】:2019-08-06 08:42:41
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

  • 我认为你的第一个猜测是正确的。如果您设置“stateful = true”,您的第二个也是正确的。如果“stateful=false”,则单元状态和隐藏状态将在每 60 个时间步后重置。

标签: keras neural-network lstm


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2019-11-26
    • 1970-01-01
    • 2016-07-05
    • 2010-09-23
    • 2022-01-14
    相关资源
    最近更新 更多