Python keras lstm差异无状态和有状态

Python keras lstm差异无状态和有状态,python,keras,lstm,stateless,stateful,Python,Keras,Lstm,Stateless,Stateful,我试图理解Keras中LSTM层的概念。 我只想确认LSTM的一些行为,并检查我是否正确理解它 假设我有1000个样本,这个样本有1个时间步长,当 stateful = True 这是否与1000个时间步长的1个样品和1个批次大小的1个样品相同 stateful = False 在这里,我还假设在这两种情况下,我有相同的信息只是在不同的形状,我重置我的LSTM层的状态后,每个训练历元 我还认为无状态情况下的批处理大小只对我的训练序列有影响,因为如果我设置 stateful = False

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

假设我有1000个样本,这个样本有1个时间步长,当

stateful = True
这是否与1000个时间步长的1个样品和1个批次大小的1个样品相同

stateful = False
在这里,我还假设在这两种情况下,我有相同的信息只是在不同的形状,我重置我的LSTM层的状态后,每个训练历元

我还认为无状态情况下的批处理大小只对我的训练序列有影响,因为如果我设置

stateful = False 
我可以使用input_形状而不是batch_input_形状。因此,我的LSTM层不需要批次维度,只需要时间步长和特征维度。这是正确的吗

我的结论来自:

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

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


谢谢大家。

stateful=True
意味着您保留每个批的最终状态,并将其作为下一批的初始状态传递。
因此,是的,在这种情况下,如果你有一批1000个样本或1000批1个样本,情况是一样的。

为什么你同时标记了[stateless]和[stateful]?因为我想了解这两种情况的差异,所以我看到了差异,但在这两种情况下,我会有一个序列,它有1000个时间步,不是吗?因为在无状态情况下,我唯一的样本或序列有1000个时间步,而在有状态情况下,LSTM会将我1000个序列中的1个时间步视为1个序列,对吗?无状态LSTM不存在。如果你没有状态,那么它只是一个普通的神经网络。对于“有状态”的情况,它是不同的,因为有1000个时间步的1个序列,你用不同的参数处理1000个不同的单元格,而有1000个序列,你只通过1个单元格。把你的LSTM网络想象成一条隧道。在第一种情况下,隧道很长,你只能通过一次。在另一种情况下,隧道很短,你要通过它1000次。作为无状态的情况,我理解这意味着return_state=False,这是keras中的标准设置。我忘了提到我指的是一个多对一的案例,但我想我对它的工作原理有了正确的想法,但我真的无法用语言表达出来。所以在第一种情况下,当retun_state=True时,就像我将短隧道连接到一个长隧道,对吗?因此,状态将被传递到每个批。刚刚检查了文档,似乎您是对的,
stateful=True
意味着您保留每个批的最终状态,并将其作为下一批的初始状态传递。因此,是的,在这种情况下,如果你有一批1000个样本或1000批1个样本,可能是相同的。如果你可以更新你的答案,那么我可以将其标记为正确:)