我想在 Keras 中编写一个自定义指标(我正在使用张量流后端),相当于categorical_accuracy
,但是具有特定金色标签的样本的输出(在我的例子中是 0,来自 y_true)必须被忽略。例如,如果我的输出是:
预测 1 - 金 0
预测 1 - 金 1
准确度将为 1,因为必须忽略带有金色标签 0 的样本。也就是说,我编写的函数(并且没有给出预期结果)是:
def my_accuracy(y_true, y_pred):
mask = K.any(K.not_equal(K.argmax(y_true, axis=-1), 0), axis=-1, keepdims=True)
masked_y_true = y_true*K.cast(mask, K.dtype(y_true))
masked_y_pred = y_pred*K.cast(mask, K.dtype(y_pred))
return keras.metrics.categorical_accuracy(masked_y_true, masked_y_pred)`
任何帮助表示赞赏,谢谢!
你可以尝试这个方法:
def ignore_accuracy_of_class(class_to_ignore=0):
def ignore_acc(y_true, y_pred):
y_true_class = K.argmax(y_true, axis=-1)
y_pred_class = K.argmax(y_pred, axis=-1)
ignore_mask = K.cast(K.not_equal(y_pred_class, class_to_ignore), 'int32')
matches = K.cast(K.equal(y_true_class, y_pred_class), 'int32') * ignore_mask
accuracy = K.sum(matches) / K.maximum(K.sum(ignore_mask), 1)
return accuracy
return ignore_acc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)