我使用Keras进行二元分类(单标签,一或零)。
我想创建一个自定义指标,从预测中选取最高的10%并计算这些预测的准确率。
例如,对于标签 [1, 0, 1, 1, 0, 1, 0, 1, 0, 1]
和预测 [0.5, 0.7, 0.98, 0.1, 0.2, 0.5, 0.2, 0.1, 0.9, 0.8]
它只计算0.98预测的准确率。
回答:
我通过以下代码解决了我的问题:
import tensorflow as tfdef topacc(y_true, y_pred): k = tf.cast(len(y_true) // 10, 'int64') y_true, y_pred = tf.transpose(y_true), tf.transpose(y_pred) return tf.keras.metrics.top_k_categorical_accuracy(y_true, y_pred, k=k)
这作为一个完整的Keras指标可以正常工作