【发布时间】:2018-08-07 17:34:21
【问题描述】:
我正在使用 keras 中的 CNN 解决多分类问题。我的准确率和召回率总是超过 1,这根本没有任何意义。下面附上我的代码,我做错了什么?
def recall(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
recall = true_positives / (possible_positives + K.epsilon())
return recall
def precision(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
model.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=['accuracy',recall,precision])
【问题讨论】:
-
在多类设置中,你如何计算真阳性和可能阳性。您是否明智地按标签执行此操作?
-
嗨 Vivek,感谢您回来。精确度和召回率分数被计算为批量平均。我刚刚注意到的另一件事是,我没有一次性对我的 10 个标签进行编码。我只是使用了 0-9 的数值。这也可能是问题吗?
标签: python machine-learning keras classification precision-recall