我需要在张量流中使用分布式策略训练模型。我用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
,以便在多个节点/多个工作程序上运行它。