在阅读 im2txt 中的 im2txt 源代码时遇到问题。
有batch_loss
和total_loss
:batch_loss
针对每批数据计算,并添加到tf.Graphkeys.LOSSES中
通过 tf.add_loss(batch_loss) 调用。 total_loss
由tf.losses.get_total_loss()
获得,它对tf.Graphkeys.LOSSES
中的所有损失进行平均。
问题:为什么参数会被total_loss更新?我被这个问题困惑了很多天。
最佳答案
评论中的讨论摘要:
训练损失是在小批量的前向传播中计算的。但开始反向传播不需要实际的损失值。反向传播从误差信号开始,该信号等于根据前向传递的值评估的损失函数导数。因此损失值不会影响参数更新,报告只是为了监控训练过程。例如,如果损失没有减少,则表明需要仔细检查神经网络模型和超参数。因此,仅仅为了使图表看起来更好而通过平均来平滑报告的损失并不是什么大问题。
参见this post了解更多详情。
关于machine-learning - tensorflow 中的batch_loss和total_loss=tf.get_total_loss(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47122591/