首页 > 解决方案 > 具有多个输出的 TensorFlow val_loss 定义

问题描述

在训练模型(使用 keras)时,当模型具有多个输出时,(如val_losskeras 训练日志中所示)/ epoch_loss(如 tensorboard 中所示)度量标准衡量什么?如果它很重要,那么这些输出是否也是加权的?
我的意思是多个单独的输出(例如 6 个 shape 的张量()),而不是具有多个值的单个输出(例如 1 个 shape 的张量(6))。(尽管后者的答案可能对未来的谷歌人有用。)

我最初认为这将是所有输出的加权平均值。但我的观察与这个猜测不符。下面是张量板的屏幕截图,显示了每个输出的验证损失,以及epoch_loss值(也在验证中)。如您所见,在每个输出上,损失​​都在增加,但epoch_loss值却在不断减小。

我还确认这些指标与keras 训练日志中显示的val_*指标 ( val_1_loss, val_2_loss, ..., ) 匹配。val_loss

张量板输出

请注意,我对调查损失增加的原因或修复模型的方法或任何东西不感兴趣。我知道这是一个糟糕的模型。这只是我选择的超参数搜索中的一个模型,作为该问题的一个很好的例子。虽然我目前正在使用val_loss作为超参数搜索优化指标,但从这些数据来看,这似乎不是一个好主意。我可以创建自己的指标来对所有输出进行加权平均,但想了解val_loss实际测量的是什么。

标签: pythontensorflowkeras

解决方案


当模型有多个输出时,val_loss / epoch_loss 度量标准是什么?如果它很重要,那么这些输出是否也是加权的?

loss_weights使用系数将损失值计算为多个输出的损失的加权和。当没有定义权重时,损失只是损失的总和。

以下是代码中的引用:


推荐阅读