【发布时间】:2020-01-19 02:51:17
【问题描述】:
在训练模型(使用 keras)时,当模型具有多个输出时,val_loss(如 keras 训练日志中所示)/epoch_loss(如 tensorboard 中所示)指标衡量的是什么?如果这很重要,那么这些输出是否也有加权?
我的意思是多个单独的输出(例如 6 个形状 () 的张量),而不是具有多个值的单个输出(例如 1 个形状为 (6) 的张量)。 (虽然后者的答案可能对未来的谷歌人有用。)
我最初认为这将是所有输出的加权平均值。但我的观察与这个猜测不符。下面是张量板的屏幕截图,显示了每个输出的验证损失,以及epoch_loss 值(也在验证中)。如您所见,在每个输出上,损失都在增加,而epoch_loss 的值却在不断减小。
我还确认这些指标与 keras 训练日志中显示的 val_* 指标(val_1_loss、val_2_loss、...、val_loss)相匹配。
请注意,我对调查损失增加的原因或修复模型的方法或任何事情不感兴趣。我知道这是一个糟糕的模型。这只是我选择的超参数搜索中的一个模型,作为该问题的一个很好的例子。
虽然我目前使用val_loss 作为超参数搜索优化指标,但从这些数据来看,这似乎不是一个好主意。我可以创建自己的指标来对所有输出进行加权平均,但想了解 val_loss 实际测量的是什么。
【问题讨论】:
-
您确定“epoch_N_loss”图实际上是损失图吗?如果是这样,您的模型看起来正在发散(损失增加?)。您能否阐明这些图是如何生成的以及它们究竟包含什么?
-
是的。我的意思是除非 tensorflow/keras 内部正在做其他事情。我已经用
loss='mean_squared_error'配置了模型。张量板屏幕截图中的值与详细训练日志中的输出相匹配。这些图是由张量板回调使用配置的损失指标自动生成的(它会自动为模型的每个输出创建一个单独的图)。 -
你确定,每个纪元的日志记录都完成了,而不是一个纪元的每批都记录吗?
-
是的。特别是因为这些是验证指标,并且验证只发生在 epoch 结束时。
标签: python tensorflow keras