Keras LSTM 状态与带滑动窗口的前馈网络

标签 keras lstm feed-forward

在 Keras 的 LSTM 实现中的默认模式 (stateful = False) 中,一批中的所有样本都是独立的,并且状态不会从一个样本传播到下一个样本。根据我的理解,输入序列长度 (L) 是让 LSTM 保持状态的唯一方法。但这将状态传播限制在固定数量的时间步长,即 L。理论上,与具有固定大小滑动输入窗口的前馈神经网络相比,这种操作模式有什么优势。这样 NN 的每个输入都是 L 个连续输入值的向量。

理论上,LSTM 应该能够学习跨越 1000 个时间步的长距离依赖。但这不是要求我有 L = 1000,因为没有办法捕获比输入序列长度更长的依赖项吗?我知道可以通过格式化输入数据来使用有状态模式,这样每个批次的第 i 个样本是相关的。我很难理解默认 LSTM 模式相对于输入数据具有滑动窗口的前馈神经网络有什么优势?

最佳答案

前馈神经网络 (FFNN) 和任何循环网络(RNN、LSTM...)之间的主要区别在于存在随时间变化的循环连接。
使用带有滑动窗口的 F​​FNN 可能会让您到达某个地方,但您的内部表示将仅基于时间“t”的输入。而 Recurent Net 也将利用以前看到的数据。
无状态 vs 有状态:
我不会详细介绍 SO 上已经有很多关于这个主题的好帖子,但重要的是状态在 之间重置。批次 不是每个 sample 所以它确实携带了一些超出常规 FFNN 不会的序列长度的信息。

关于Keras LSTM 状态与带滑动窗口的前馈网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201268/

相关文章:

python - 为什么神经网络不学习?

tensorflow - Keras 连接类型错误 : __init__() got multiple values for argument 'axis'

neural-network - 输入层是否应包含偏向神经元?

c++ - 我的神经网络学习 sin x 而不是 cos x

python - LSTM在Keras中的实现

python - Pybrain前馈神经网络训练错误完全卡住

python - CNN 与 keras 预测能量

machine-learning - Keras - 具有经常丢失的 GRU 层 - 损失 : 'nan' , 准确度:0

machine-learning - 如何计算LSTM网络的参数个数?

python-3.x - Keras LSTM 层输入形状