首页 > 解决方案 > Keras:model.prediction 与 model.evaluation 损失不匹配

问题描述

我应用了本教程https://github.com/Hvass-Labs/TensorFlow-Tutorials/blob/master/23_Time-Series-Prediction.ipynb(在不同的数据集上),该教程没有计算单个输出的均方误差,所以我在比较函数中添加了以下行:

    mean_squared_error(signal_true,signal_pred)

但是预测的损失和mse与模型的损失和mse不同。对测试数据的评估。model.evaluation(损失,mae,mse)(测试集)的错误:

    [0.013499056920409203, 0.07980187237262726, 0.013792216777801514]

来自单个目标(输出)的错误:

    Target0 0.167851388666284
    Target1 0.6068108648555771
    Target2 0.1710370357827747
    Target3 2.747463225418181
    Target4 1.7965991690103074
    Target5 0.9065426398192563 

我认为这可能是训练模型的问题,但我找不到它到底在哪里。我将衷心感谢您的帮助。

谢谢

标签: pythontensorflowkerasloss-functionmse

解决方案


有很多原因会导致训练损失和评估损失之间存在差异。

  • 某些操作,例如批量标准化,在预测时被禁用 - 这可能会对某些架构产生很大的影响,尽管如果您正确使用批量规范,通常不应该这样做。
  • 用于训练的 MSE 在整个 epoch 上取平均值,而评估只发生在模型的最新“最佳”版本上。
  • 如果拆分不是随机的,则可能是由于数据集的差异。
  • 您可能在没有意识到的情况下使用了不同的指标。

我不确定你到底遇到了什么问题,但它可能是由很多不同的事情引起的,而且通常很难调试。


推荐阅读