在Keras文档中,stateful
和unroll
都设置为False
。那么如果都不是这两种情况,那么如何在Keras中进行复发呢?
Keras RNN documentaion
我已经在Keras中检查了RNN的源代码,似乎默认操作是在每个时间步初始化LSTM。我很累吗?
if initial_state is not None:
pass
elif self.stateful:
initial_state = self.states
else:
initial_state = self.get_initial_state(inputs)
如果我是正确的,这是否意味着对于时间序列分析,最好设置
unroll=True
? 最佳答案
既没有展开也没有状态。
请记住,Keras中的“有状态”仅意味着“两个连续的批次将被解释为同一序列的两个部分”。没有其他的。 (第2批是第1批的续集)
当然,所有LSTM都有状态(不可能没有)。
注意“初始化LSTM”这个表达。 stateful=False
层将为每个批次“重置状态”。实际结果是:“每个批次都是从头到尾的一组独立序列”。 (第2批不是第1批的续集)
“状态”是有关“直到当前步骤的序列历史”的信息。它们与“权重”完全不同,“权重”是该层实际从所有序列中学到的东西。
“展开”是一种将递归计算转换为单个图而无递归的方法。它仅适用于短序列,它会以使用更多内存为代价来加快处理速度。
关于machine-learning - Keras的默认LSTM是展开的还是有状态的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57187478/