keras lstm 无状态和有状态的区别
keras lstm difference stateless and 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
如果我有一个多层 LSTM 网络,如果第一个 LSTM 层是有状态的,那么所有其他层也应该是有状态的,对吗?
我希望有人明白我的意思并能帮助我。如果我的问题不明白请告诉我,我会更新这个 post.
谢谢大家
stateful=True
意味着您保留每个批次的最终状态并将其作为下一批次的初始状态传递。
所以是的,在这种情况下,如果您有 1 批 1000 个样本或 1000 批 1 个样本,情况是一样的。
我想了解 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
如果我有一个多层 LSTM 网络,如果第一个 LSTM 层是有状态的,那么所有其他层也应该是有状态的,对吗?
我希望有人明白我的意思并能帮助我。如果我的问题不明白请告诉我,我会更新这个 post.
谢谢大家
stateful=True
意味着您保留每个批次的最终状态并将其作为下一批次的初始状态传递。
所以是的,在这种情况下,如果您有 1 批 1000 个样本或 1000 批 1 个样本,情况是一样的。