【问题标题】:Calculate Metrics for Keras CNN model计算 Keras CNN 模型的指标
【发布时间】:2020-10-03 23:05:25
【问题描述】:

我有一个 CNN 模型,可以识别总共 4 个姿势的人体姿势,我将通过计算召回率、精度、fmeasure、准确度等指标来测试我的模型的性能。精度是在 Keras 库中默认计算的,但另一个我需要实现它们。我找到了计算这些指标的源代码,但我认为这是用于二进制分类:

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

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 f1(y_true, y_pred):

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
precision = precision(y_true, y_pred)
recall = recall(y_true, y_pred)
return 2*((precision*recall)/(precision+recall+K.epsilon()))

model.compile(loss='binary_crossentropy',
          optimizer= "adam",
          metrics=[mcor,recall, f1])

我认为这只是用于二进制分类,所以我需要你的帮助,如果我不能将它用于多标签分类,我可以使用什么方法?

【问题讨论】:

    标签: python tensorflow machine-learning deep-learning computer-vision


    【解决方案1】:

    因为您的最终输出可以有 4 个标签。在model.compile部分更改

    loss='binary_crossentropy'loss='categorical_crossentropy'

    在你的神经网络架构的最后一层,将激活函数更改为'softmax'',同时输出神经元的数量也应该改变。 其他更改(例如输入形状)将取决于您提供给模型的数据。

    请参阅此博客以了解有关 CNN 的更多信息。

    https://towardsdatascience.com/convolutional-neural-networks-for-beginners-practical-guide-with-python-and-keras-dc688ea90dca

    请参阅此博客以了解有关如何计算深度学习模型的精度、召回率、F1 等的更多信息

    https://machinelearningmastery.com/how-to-calculate-precision-recall-f1-and-more-for-deep-learning-models/

    【讨论】:

    • 但是我可以在多标签分类中使用这些功能,还是只用于二进制分类? @Siddhant Ranjan
    • @SteveMclin 是的,您可以使用它,这就是为什么我给您博客链接的原因,您只需浏览一下,您就会了解这些功能是什么,并查看是否需要进行任何更改,因为这些功能已实现从头开始。
    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2017-12-10
    相关资源
    最近更新 更多