我在tensorflow中训练LSTM网络。我的模型具有以下配置:
time_steps = 1700
细胞大小:120
输入要素数x = 512。
批量:34
优化器:AdamOptimizer,学习率= 0.01
时期数= 20
我有GTX 1080 Ti。我的tensorflow版本是1.8。
另外,我已经设置了随机种子tf.set_random_seed(mseed),我为每个可训练变量的初始化器设置了随机种子,这样我可以在多次运行后重现相同的结果。
在多次训练模型之后,每次20个时期,我发现我在前几个时期(7,8或9)“在每次运行期间”实现了相同的精确损失,然后损失开始有所不同。我想知道为什么会这样; 如果可能的话,有人可以完全重现任何模型的结果。
另外,在我的情况下,我在每次迭代期间提供整个数据。也就是说,我通过时间(BPTT)进行反向传播而不是截断BPTT。换句话说,我总共有2次迭代,它也等于时期的数量。
下图说明了我的问题。请注意,每一行对应一个纪元。
请注意,每列对应不同的运行。(我只包括2列/次)来证明我的观点。
最后,使用尺寸100的新功能替换输入要素,我得到更好的结果,如下图所示:
因此,我不确定这是否是硬件问题?
据我所知,正如您可能尝试过的那样,tf.set_random_seed(seed=1)或seed等于任何其他整数可能是一种可能的解决方案。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。