gpt4 book ai didi

python - Keras 中的自定义损失函数和输出精度不正确

转载 作者:行者123 更新时间:2023-12-04 01:53:27 24 4
gpt4 key购买 nike

当我按如下方式制作自定义损失函数时:(与 binary_crossentropy 相同)

def custom_loss(y_true, y_pred):
ce = K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)
return ce

keras/keras/losses.py 中的 binary_crossentropy 是:
def binary_crossentropy(y_true, y_pred):
return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)

当我运行时:
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])

输出是正确的。
ETA: 6:20 - loss: 0.3697 - acc: 0.8343

如果我使用我的 custom_loss:
model.compile(loss=custom_loss, optimizer=optimizer, metrics=['accuracy'])

输出不正确:
ETA: 10:49 - loss: 0.7651 - acc: 0.0694

我们可以看到精度是不正确的。为什么??

最佳答案

这是造成loss="binary_crossentropy"之间的准确度不一样的功能和自定义损失函数。

如果您设置 loss='binary_crossentropy' , 公制 "acc"'binary_accuracy' 相同.
但是您将自定义损失函数设置为您的代码,它与 'categorical_accuracy' 相同.

def binary_accuracy(y_true, y_pred):
return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)


def categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.argmax(y_true, axis=-1),
K.argmax(y_pred, axis=-1)),
K.floatx())

因此,如果您获得相同的 acc 值,则在您的指标数组上指定 keras.metrics.binary_accuracy。
from keras.metrics import binary_accuracy

model.compile(loss=custom_loss,
metrics=[binary_accuracy])

关于python - Keras 中的自定义损失函数和输出精度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51874760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com