【发布时间】: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