给定具有维度的X(m个样本,n个序列和k个特征),以及具有维度的y个标签(m个样本,0/1):
假设我想训练一个有状态的LSTM(通过keras定义,其中"stateful = True"意味着每个样本的序列之间不重置单元状态 - 如果我错了,请纠正我!),是否应该在每个时期重置状态基础或每个样本的基础?
例:
for e in epoch:
for m in X.shape[0]: #for each sample
for n in X.shape[1]: #for each sequence
#train_on_batch for model...
#model.reset_states() (1) I believe this is 'stateful = False'?
#model.reset_states() (2) wouldn't this make more sense?
#model.reset_states() (3) This is what I usually see...
总之,我不确定是否在每个序列或每个时期之后重置状态(在所有m个样本都在X中训练之后) .
建议非常感谢 .
1 回答
如果使用
stateful=True
,通常会在每个纪元或每两个样本结束时重置状态 . 如果要在每个样本后重置状态,那么这相当于只使用stateful=False
.关于你提供的循环:
请注意
X
的维度并不完全正确实际上是维度
因此,你不应该有内循环:
现在,关于循环
由于批量枚举是在keras中自动完成的,因此您也不必实现此循环(除非您希望每两个样本重置一次状态) . 因此,如果您只想在每个纪元的末尾重置,则只需要外部循环 .
以下是此类架构的示例(取自this blog post):