【问题标题】:Not being able to reproduce the Same results over multiple runs for an LSTM model in tensorflow无法在 tensorflow 中为 LSTM 模型的多次运行重现相同的结果
【发布时间】:2019-06-15 09:22:53
【问题描述】:

我在 tensorflow 中训练了一个 LSTM 网络。我的模型有以下配置:

  • time_steps = 1700
  • 像元大小:120
  • 输入特征数 x = 512。
  • 批量大小:34
  • 优化器:学习率 = 0.01 的 AdamOptimizer
  • 时期数 = 20

我有 GTX 1080 Ti。而我的 tensorflow 版本是 1.8。

此外,我已经通过tf.set_random_seed(mseed) 设置了随机种子,并且我已经为每个可训练变量的初始化程序设置了随机种子,这样我就可以在多次运行后重现相同的结果。

在多次训练模型后,每次 20 个 epoch,我发现我在前几个 epoch(7、8 或 9)“在每次运行期间”实现了相同的精确损失,然后损失开始不同。我想知道为什么会这样;如果可能的话,有人怎么能完全重现任何模型的结果。

此外,在我的情况下,我在每次迭代期间提供整个数据。也就是说,我通过时间进行反向传播(BPTT)而不是截断 BPTT。换句话说,我总共有 2 次迭代,也等于 epoch 的数量。

下图演示了我的问题。请注意,每一行对应一个时期。

请注意,每一列对应不同的运行。 (我只包括 2 列/运行)来证明我的观点。

最后,用维度为 100 的新特征替换输入特征,我得到了更好的结果,如下图所示:

因此,我不确定这是否是硬件问题?

非常感谢任何帮助!

【问题讨论】:

    标签: python tensorflow reproducible-research


    【解决方案1】:

    假设你所做的一切都是正确的,可能的问题是Adam is not reproducible,所以这可能是一个问题。

    但还有其他潜在的错误来源:finalizing your graph and setting its seedoperation level seeds

    希望这会有所帮助!没有代码很难确定你所做的一切都是正确的,但谁知道你的代码可能有多长

    【讨论】:

      【解决方案2】:

      据我所知,您可能已经尝试过,tf.set_random_seed(seed=1)seed 等于任何其他整数可能是一种可能的解决方案。

      【讨论】:

        猜你喜欢
        • 2018-02-17
        • 1970-01-01
        • 2020-05-19
        • 1970-01-01
        • 2019-11-13
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多