【问题标题】:Why the accuracy and binary_accuracy in keras have same result?为什么 keras 中的 accuracy 和 binary_accuracy 有相同的结果?
【发布时间】:2020-12-18 17:29:38
【问题描述】:

我使用 Keras 创建了一个简单的二元分类模型。代码是:

    # create model
    model = Sequential()
    model.add(Dense(250, input_dim=1, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    # Compile model
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy', 'binary_accuracy'])

我的目的是检查accuracybinary_accuracy 的结果,了解它们之间的区别。

正如 Keras 所说,binary_accuracy 准确度有阈值,默认为.5,而“准确度”没有。当我用样本数据测试它们时,结果是不同的,但在模型的训练中,你在每个时期都有相同的结果。

对于这个真实的和预测的样本,我测试了accuracybinary_accuracy

   y_true = [[1], [1], [0], [0]]
   y_pred = [[0.51], [1], [0], [0.4]]

对于binary_accuracy 是:

m = tf.keras.metrics.BinaryAccuracy()
m.update_state(y_true, y_pred)
m.result().numpy()

结果是: 1

对于accuracy 是:

m = tf.keras.metrics.Accuracy()
m.update_state(y_true, y_pred)
m.result().numpy()

结果是: '.5'

但在上述模型中,每个时期的每个人都是相同的。

编辑

通过将编译更改为这个,结果发生了变化:

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy', tf.keras.metrics.BinaryAccuracy(threshold=.7)])

为什么accuracybinary_accuracy 一样工作,threshold=0.5 在模型中而不在模型外?

【问题讨论】:

    标签: tensorflow keras classification


    【解决方案1】:

    根据tf.keras.Model.compile() 文档:

    当您传递字符串 'accuracy' 或 'acc' 时,我们会根据损失函数将其转换为 tf.keras.metrics.BinaryAccuracy、tf.keras.metrics.CategoricalAccuracy、tf.keras.metrics.SparseCategoricalAccuracy 之一使用和模型输出形状。我们也对字符串“crossentropy”和“ce”进行了类似的转换。

    在您的情况下,它已转换为 BinaryAccuracy,因此结果是相同的。

    但是tf.keras.metrics.Accuracy 完全不同。如果您阅读文档:

    计算预测等于标签的频率。

    这意味着它会查看 y_predy_true 的唯一值,并将每个唯一值视为不同的标签。在您的情况下,0.51 和 0.4 被视为单独的标签,因为它们分别不等于 1 和 0,所以您得到 0.5

    抱歉,首先将此问题标记为重复,tf.keras 中的行为与 keras 包中的行为不同

    【讨论】:

    • 非常感谢。然后评估这样做?它使用threshold=0.5?当我们使用预测和其他阈值时,准确性会发生变化吗?
    • 在评估时应该使用相同的阈值。如果更改阈值,精度自然会发生变化。在进行推理时,可以调整分类阈值以满足您的需求,即平衡 True Positives 和 True Negatives
    猜你喜欢
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 2021-04-03
    • 2021-09-09
    相关资源
    最近更新 更多