【问题标题】:How can a neural network developed using TensorFlow remember old memories?使用 TensorFlow 开发的神经网络如何记住旧的记忆?
【发布时间】:2018-01-10 07:27:48
【问题描述】:

我是 TensorFlow 和 NN 的新手。我开发了一个张量模型,它使用 LSTM 来表达文本的情感。我的模型一直训练到给定数量的 epoch 或迭代,并将模型保存为特定数量。 (即,我在每 5 个 epoch 后保存模型。)一旦训练完成,我会选择最后一个检查点文件并将其用于预测。

但是当我再次使用新数据运行我的训练代码时,我产生了疑问。我越来越糊涂了。

过去的数据记忆是否带有新创建的检查点文件。例如,当我使用epoch=150 训练我的模型时,我得到了./models/tensorflow/model-150。现在我又恢复了 model-150 并开始使用新数据进行训练,因为节省了逻辑步骤

saver.save(sess, os.path.join(model_path, 'model'), global_step=epoch)

我没有看到 model-151,而是将旧的 model-1 替换为新的 mode-1。这里我想知道的是第一个model-150记忆是否存在,第二次训练和创建的model-150不存在?

【问题讨论】:

    标签: tensorflow neural-network lstm training-data rnn


    【解决方案1】:

    是的,您仍然具有网络中第一个 150 个时期的效果,只是新文件与您在 global_step 中提供的时期号一起保存,如果它已经在网络中,它将不会去查找受过训练。我建议你改写saver.save(sess, os.path.join(model_path, 'model'), global_step=epoch+150)(或者更聪明的方法,读取检查点名称中以前的纪元数,然后将其添加到你的 global_step 中)

    【讨论】:

    • 我尝试了逻辑看起来我成功了,但我如何确保新数据正在最后一个检查点文件上训练并创建新的检查点文件。
    • 用 1 个 epoch,然后用 150 个 epoch,然后用 150 个 epoch+1 个 epoch 对新数据进行测试。在相同的数据集上进行这些测试,例如从第一个训练集中。您应该会看到 1 个 epoch 的坏结果,以及 150 和 150+1 个 epoch 的好结果,这将向您证明 150+1 确实建立在 150 个检查点之上。
    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2023-03-14
    • 2018-04-21
    相关资源
    最近更新 更多