keras lstm区别无状态和有状态

时间:2018-10-26 14:31:49

标签: python keras lstm stateless stateful

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

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

stateful = True

这与1个具有1000个时间步长的样本和

为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网络,那么所有其他层也应该是有状态的吗?

我希望有人能理解我的意思并能为我提供帮助。如果我的问题无法理解,请告诉我,我将更新此帖子。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

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