python - keras lstm 区别无状态和有状态

标签 python keras lstm stateless stateful

我试图理解 Keras 中 LSTM 层的概念。
我只想确认 LSTM 的某些行为并检查我是否理解正确。

假设我有 1000 个样本,并且这个样本有 1 个时间步长,并且我的批次大小为 1

stateful = True

这是否与具有 1000 个时间步长和批量大小为 1 的 1 个样本相同?
stateful = False

在这里,我还假设在这两种情况下,我都有相同的信息,只是形状不同,并且在每个训练时期后我都会重置 LSTM 层的状态。

我还认为无状态情况下的批量大小只对我的训练序列很重要,因为如果我设置
stateful = False 

我可以使用 input_shape 而不是 batch_input_shape。所以我的 LSTM 层不需要批处理维度,只有时间步长和特征维度。这样对吗?

我得到了这个结论:

https://github.com/keras-team/keras/blob/master/keras/layers/recurrent.py#L1847

When does keras reset an LSTM state?

Understanding Keras LSTMs

如果我有一个多层 LSTM 网络,如果第一个 LSTM 层是有状态的,那么所有其他层也应该是有状态的,对吗?

我希望有人明白我的意思并能帮助我。如果我的问题不能理解,请告诉我,我会更新这篇文章。

谢谢大家。

最佳答案

stateful=True意味着您保留每个批次的最终状态并将其作为下一个批次的初始状态传递。
所以是的,在这种情况下,如果您有 1 个批次的 1000 个 sample 或 1000 个批次的 1 个 sample ,则情况相同。

关于python - keras lstm 区别无状态和有状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53010965/

相关文章:

windows - 为什么带有 TensorFlow 的 Keras 没有使用所有 GPU 内存

python - Tensorflow 模型输入形状错误 : Input 0 of layer sequential_11 incompatible with layer: rank undefined, 但层需要定义等级

neural-network - 如何为具有外部特征的时间序列多步范围构建 LSTM 的输入数据?

python - ConvLSTMCell : Dimensions of inputs should match 的 Tensorflow 错误

Python从特定日期中提取周数

python - Sphinx Autodoc 无法正确导入

keras - 如何在lstm keras中获得非负输出

tensorflow - 如何在Tensorflow中使用LSTM模型生成例句?

python - 如何在 pymunk 中制作 "compound"形状?

python - Django 数据库后端文档