我在阅读关于Keras有状态RNN的内容(这种RNN会在批次/样本之间传递隐藏状态,从而保留记忆)。
然而,在Keras的FAQ中,给出了一个例子,其中在训练完一个批次后有一行代码model.reset_states()
。
这不是完全否定了RNN中的’stateful=True
‘参数吗?
如果你要重置状态,那为什么不使用默认的’stateful=False
‘ RNN,它会在每个批次后将隐藏状态重新初始化为零呢?
回答:
请注意,在链接的例子中,他们只在训练了两个批次后重置状态,因此第一个批次和第二个批次之间的状态被保留了。何时重置状态取决于你。如果你愿意,你可以每隔几个批次重置一次,或者只在每个epoch之后重置(甚至可以完全不重置)。你可以在这里看到几个例子这里。