Keras - 损失和指标计算方式不同?

时间:2018-02-10 10:07:47

标签: python neural-network keras loss metric

我在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

2 个答案:

答案 0 :(得分:12)

请记住 - 如果您使用任何类型的正规化 - 它会影响您的shasum: elasticsearch-5.6.4.deb.sha1: no properly formatted SHA1 checksum lines found 。您的实际损失等于:

loss

这就是你的差异所在。

答案 1 :(得分:1)

马辛是对的。 Here 我已经探索了正则化和分批的效果。两者都会影响日志中记录的训练损失,但正则化的影响最大。始终建议在拟合模型后使用 model.evaluate 计算指标。 如果想在训练期间查看“实际”损失,一个技巧是将验证集设置为与训练集(或训练集的子集,如果数据过多)相同。与训练损失不同,验证指标只是在拟合模型上进行评估。