具有自定义损失函数的Keras精度
我正在具有自定义损失函数的Keras精度,keras,loss-function,Keras,Loss Function,我正在Keras中使用自定义损失函数: def get_top_one_probability(vector): return (K.exp(vector) / K.sum(K.exp(vector))) def listnet_loss(real_labels, predicted_labels): return -K.sum(get_top_one_probability(real_labels) * tf.math.log(get_top_one_probability(pred
Keras
中使用自定义损失函数:
def get_top_one_probability(vector):
return (K.exp(vector) / K.sum(K.exp(vector)))
def listnet_loss(real_labels, predicted_labels):
return -K.sum(get_top_one_probability(real_labels) * tf.math.log(get_top_one_probability(predicted_labels)))
如何使用自定义损失函数计算度量值
精度
?损失函数和精度函数是两种不同的度量值。改变一个不会改变另一个。因此,如果您的任务是一个回归问题,那么精度函数不会改变,也会很好(Keras使用回归问题的
回归精度
函数)。多类分类也一样(Keras使用分类精度
函数解决多类问题)
但是,请确保当任务为二元分类时,更改损失函数会将精度函数从二元精度
更改为分类精度
,因此您可能会得到不同的结果。解决方法是使用二进制_accuarcy,如下所示:
def binary_accuracy(y_true, y_pred):
return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
model.compile(loss=custom_loss,
metrics=[binary_accuracy])
损失和准确性是两码事。更改损失函数不会更改精度函数。你想干什么?是二进制分类还是多类分类classififcation@DvirSamuel我知道损失和准确度是不同的。也许我对这个问题的理解不好。如果我使用自定义损失函数,我想知道Keras计算的精度是否可靠。它应该是可靠的。我知道在二进制分类任务中使用自定义损失函数时有一个技巧(所以请告诉我这是否是您的情况)。但对于其他任务,更改损失函数不会更改精度函数。@我的任务更像是一个回归问题。基本上,我试图对一个句子中的单词进行排序,为了做到这一点,我的NN为每个单词输出一个实数,然后对这些输出进行排序。请参阅我的答案。我给了其他会看到这个问题的人一个大致的答案