【发布时间】:2019-02-18 04:48:59
【问题描述】:
这可能是一个愚蠢的问题,但是:
我注意到损失函数的选择会改变评估过程中获得的准确度。
我认为损失仅在训练期间使用,当然它取决于模型在进行预测方面的优劣,而不是准确性,即正确预测的数量相对于样本总数。
EDIT
我没有正确地解释我的自我。
我的问题是因为我最近训练了一个带有 binary_crossentropy 损失的模型,并且来自 model.evaluate() 的准确度为 96%。
但它不正确!
我“手动”检查,模型得到了总预测的 44%。然后我改成categorical_crossentropy,然后准确率就对了。
MAYBE ANSWER
来自:another question
我发现了问题。 metrics=['accuracy'] 根据成本函数自动计算准确性。所以使用 binary_crossentropy 显示二进制精度,而不是分类精度。使用 categorical_crossentropy 会自动切换到分类精度,现在它与使用 model1.predict() 手动计算相同。
【问题讨论】:
-
您是如何手动检查的?因为二进制交叉熵会改变使用的准确度指标,所以对于二进制 CE,keras 将对输出进行阈值/舍入以产生二进制预测。
-
我在测试集上使用
predict_classes检查并计算correct_predictions/total_predictions。也许它会像你建议的那样使用精确的指标,我使用的是metrics=['accuracy'],而不是我应该使用categorical accuracy
标签: keras loss-function