python - 具有多个输出的 TensorFlow val_loss 定义
问题描述
在训练模型(使用 keras)时,当模型具有多个输出时,(如val_loss
keras 训练日志中所示)/ 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
实际测量的是什么。
解决方案
当模型有多个输出时,val_loss / epoch_loss 度量标准是什么?如果它很重要,那么这些输出是否也是加权的?
loss_weights
使用系数将损失值计算为多个输出的损失的加权和。当没有定义权重时,损失只是损失的总和。
以下是代码中的引用:
推荐阅读
- c# - 在控制器中添加 [Authorize] 导致错误 401.0
- javascript - 为什么我的 html 代码没有调用我的 javascript 代码?
- vi - 如何在vi中交换奇数行和偶数行?
- qt5 - 无法编译 Qt5 示例。未找到 QCommandParser
- javascript - 获取两个数组之间的精确匹配元素
- single-sign-on - 带有 shibboleth 的 SSO 设置
- reactjs - 如何在反应中调用handleSubmit上的组件
- docker - 构建 docker 并将其推送到不同 CI 构建步骤中的策略,无需 tar
- c# - 从数据库中获取以后的日期而不计算过滤日期
- c++ - OpenCV 尝试读取或写入视频文件导致 VIDEOIO 异常“找不到起始编号”(icvExtractPattern)