【问题标题】:Tensorflow Multi-GPU lossTensorFlow 多 GPU 损失
【发布时间】:2019-02-14 11:05:54
【问题描述】:

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

【问题讨论】:

    标签: python tensorflow multi-gpu


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2018-06-25
      • 2017-06-26
      • 2018-01-09
      • 2020-01-01
      相关资源
      最近更新 更多