当我使用tf.Estimator和tf.Session用于同一模型,相同的损耗计算和相同的学习率时,损耗是不同的

时间:2019-12-02 09:43:24

标签: python tensorflow deep-learning tensorflow-estimator

我需要在张量流中使用分布式策略训练模型。我用tf.Estimator实现了tf.distribute.experimental.MultiWorkerMirroredStrategy()训练脚本,但是当训练模型sess.run(train_op)sess=tf.Session)时,损失并不相同。

使用tf.Estimator时的损失摘要:

loss = 0.6931446, step = 0
loss = 0.69269186, step = 10000 (131.666 sec)
loss = 0.692308, step = 20000 (131.022 sec)
..
loss = 0.6902984, step = 70000 (133.117 sec)
loss = 0.6897839, step = 80000 (133.148 sec)

使用sess.run()时的损失摘要:

loss:0.512632610154152 step:10000 learning_rate:0.024910704185003737 progress:0.0035861773090868827
loss:0.43613347370028493 step:20000 learning_rate:0.024821501411608406 
progress:0.0071686180076946495
..
loss:0.3895742467820644 step:70000 learning_rate:0.024375198081873287 progress:0.025092446511112955
loss:0.38712772973775866 step:80000 learning_rate:0.024285964294610978 progress:0.02867613274654709

有人可以帮我清理一下吗?关于为什么在使用估计器进行训练时损失没有收敛的问题,当我在两个训练API上使用相同的模型,相同的损失计算和相同的学习率时?我需要将代码迁移到tf.Estimator,以便在多个节点/多个工作程序上运行它。

0 个答案:

没有答案