在Keras文档中,statefulunroll都设置为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/

10-12 17:40
查看更多