Tensorflow 多 GPU 损失

Tensorflow Multi-GPU loss

我正在研究如何在Tensorflow上实现多GPU训练。 现在我正在按照文档中的建议阅读 this source。 据我了解,在第 178 行,可变损失仅占一个 GPU 的损失(如评论所述)。因此,在循环结束时,比如第 192 行,损失将保留最后考虑的 GPU 的损失值。 可变损失在第 243 行使用之前不会被修改,当它被传递给 Session.run() 进行计算时。 所以第 255 行打印的损失值只是最后一个 GPU 的损失,而不是全部。 Google 工程师弄错这么简单的事情对我来说似乎很难,我错过了什么? 谢谢!

看来你并没有遗漏什么。他们认为打印损失值并报告一个塔的摘要就足够了。

通常,当您开始在多个 GPU 上使用新模型时,您会跟踪每个 GPU 的 loss/summaries and/or 计算平均损失,仅用于调试。之后,只跟踪一个塔就足够了,因为每个塔都包含相同的模型副本。

顺便说一句,我发现使用 tf.estimators 进行多 GPU 训练更容易,同时使用 tf.contrib.estimator.replicate_model_fn(...)tf.contrib.estimator.TowerOptimizer(...) 来分发模型和优化器。