hidden - 我可以在 Keras 的输入数据集之间重置 RNN 的隐藏状态吗?

标签 hidden keras recurrent-neural-network

我在一个由不同来源组成的大型数据集上训练 RNN。我不希望一组的历史溢出到下一组。这意味着我想在一组结束时重置隐藏状态,然后再发送下一组。我怎样才能用 Keras 做到这一点?该文档声称您可以进入低级配置。

我想要做的是在每次输入新数据集时重置 lstm 隐藏状态,因此不会受到前一个数据集的影响。见行

prevh = Hout[t-1] if t > 0 else h0

来自 Karpathy 的简单 python 实现 https://gist.github.com/karpathy/587454dc0146a6ae21fc 第 45 行

如果我找到 lstm 层并在其上调用 reset,我担心这会消除权重和偏差的整个训练,而不仅仅是 Hout

这是训练循环代码

for iteration in range(1, 10):
    for key in X_dict:
        X = X_dict[key]
        y = y_dict[key]
        history=model.fit(X, y, batch_size=batch_size, callbacks=cbks, nb_epoch=1,verbose=0)

循环中的每一轮都从单一市场输入数据。这就是我喜欢在 lstm 中重置 hout 的地方。

最佳答案

To reset the states of your model, call .reset_states() on either a specific layer, or on your entire model. source

所以如果你有一个数据集列表:

for ds in datasets :
    model.reset_states()
    model.fit(ds['inputs'],ds['targets'],...)

这是您要找的吗?

编辑:

for iteration in range(1, 10):
    for key in X_dict:
        model.reset_states() # reset the states of all the LSTM's of your network
        #model.layers[lstm_layer_index].reset_states() # reset the states of this specific LSTM layer
        X = X_dict[key]
        y = y_dict[key]
        history=model.fit(X, y, batch_size=batch_size, callbacks=cbks, nb_epoch=1,verbose=0)

这就是您应用它的方式。

默认情况下,LSTM 不是有状态的。这意味着他们在遍历序列后不会保持隐藏状态。开始新序列时的初始状态将设置为 0。如果您选择了 stateful=True,那么它将保留前一个序列的最后一个隐藏状态(输出)来为下一个序列初始化自己批处理中的顺序。这就像序列在继续。

执行 model.reset_states() 只会将保存在内存中的最后隐藏状态重置为 0,就像序列从头开始一样。

如果您不相信 .reset_states() 会执行您期望的操作,请随时查看源代码。

关于hidden - 我可以在 Keras 的输入数据集之间重置 RNN 的隐藏状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42591068/

相关文章:

javascript - 通过引用来自外部页面的 anchor 来扩展隐藏的 div

twitter-bootstrap-3 - Modernizr .hidden 类

keras - 为什么 Keras 如此不愿意在 [-1,1] 之外进行预测

tensorflow - 如何从序列模型中的给定数据集创建训练-开发-测试集

javascript - 我无法制作不确定长度的 JavaScript 列表,仅在分配某些属性时显示

python - Mechanize python脚本不再找到以前的表单字段

python - Keras GAN 批量训练

keras - Keras 中 class_weight 和 sample_weight 的影响

machine-learning - 使用 keras 的 RNN 编码器解码器