KERAS-损失和度量的计算方式不同



我在keras中有一个模型,我正在优化平方误差。但是,如果我使用与公制中KERAS的losses.py中的代码相同,则会获得不同的结果。为什么这是?

作为度量:

def MSE_metric(y_true, y_pred):
    return K.mean(K.square(y_pred, y_true))

用于模型:

model.compile(optimizer=SGD(lr=0.01, momntum=0.9), loss='MSE', metrics=[MSE_metric])

这导致6.07损失,但MSE_Metric为0.47

记住 - 如果您使用任何类型的正则化 - 它会影响您的loss。您的实际损失等于:

loss = mse + regularization

这是您的差异来自的地方。

Marcin是正确的。在这里,我已经探索了正规化和批量分割的效果。两者都会影响日志中记录的训练损失,但正则化的效果最大。始终建议使用模型计算指标。拟合模型后进行评估。如果想在训练过程中看到"实际"损失,那么一个技巧是设置与培训集相同的验证集(或培训集的子集,如果数据过多,则设置(。与培训损失不同,请简单地对拟合模型进行验证指标。

最新更新