batch_loss 和 total_loss=tf.get_total_loss() 在张量流中

batch_loss and total_loss=tf.get_total_loss() in tensorflow

我在 im2txt 中阅读 im2txt 源代码时遇到问题。

batch_losstotal_lossbatch_loss是为每批数据计算的,并通过tf.add_loss(batch_loss)调用添加到tf.Graphkeys.LOSSES中。 total_losstf.losses.get_total_loss() 得到,它平均了 tf.Graphkeys.LOSSES 中的所有损失。

问题:为什么total_loss会更新参数?这个问题困扰了我很多天

评论中的讨论总结:

训练损失是在小批量的前向传递中计算的。但是实际损失值 不需要 来开始反向传播。反向传播从误差信号开始,误差信号等于在正向传递的值下评估的损失函数导数。所以损失值不影响参数更新,只是为了监控训练过程而报告。例如,如果损失没有减少,则表明要仔细检查神经网络模型和超参数。所以通过平均来平滑报告的损失只是为了让图表看起来更好看,这没什么大不了的。

有关详细信息,请参阅 this post