jin*_*ing 5 floating-accuracy threshold keras
binary_accuracy在 keras 度量标准中用于将一个样本预测为正例和负例的阈值是多少?阈值是 0.5 吗?如何调整?我想将阈值设置为0.80,如果预测值为0.79,则认为是负样本?否则?如果预测值为0.81,则认为是正样本。
为了回答最初的问题,keras 使用轮函数来分配类,因此阈值为 0.5。
https://github.com/fchollet/keras/blob/master/keras/metrics.py
def binary_accuracy(y_true, y_pred):
return K.mean(K.equal(y_true, K.round(y_pred)))
Run Code Online (Sandbox Code Playgroud)
binary_accuracy 没有阈值参数,但您可以轻松定义一个。
import keras
from keras import backend as K
def threshold_binary_accuracy(y_true, y_pred):
threshold = 0.80
if K.backend() == 'tensorflow':
return K.mean(K.equal(y_true, K.tf.cast(K.lesser(y_pred,threshold), y_true.dtype)))
else:
return K.mean(K.equal(y_true, K.lesser(y_pred,threshold)))
a_pred = K.variable([.1, .2, .6, .79, .8, .9])
a_true = K.variable([0., 0., 0., 0., 1., 1.])
print K.eval(keras.metrics.binary_accuracy(a_true, a_pred))
print K.eval(threshold_binary_accuracy(a_true, a_pred))
Run Code Online (Sandbox Code Playgroud)
现在您可以将其用作 metrics=[threshold_binary_accuracy]
| 归档时间: |
|
| 查看次数: |
7394 次 |
| 最近记录: |