在 keras 模型指标中使用简单的 "accuracy" 进行多 class class 化在技术上是错误的吗?我们应该使用 CategoricalAccuracy() 吗?

Is it technically wrong to use simple "accuracy" in keras model metrics for multi-class classification? Should we use CategoricalAccuracy()?

因此,根据 Keras 的定义,简单的“准确性”指标比较 2 个标记为 类 的指标是正确的。 代码片段

        ---------some model layers---------.
        model.add(Dense(len(all_labels), name="output", activation = 'softmax'))
        METRICS = ['accuracy', tf.keras.metrics.CategoricalAccuracy() , tf.keras.metrics.AUC(), 'mae']
        model.compile(optimizer = 'adam', loss = 'binary_crossentropy',
                           metrics = METRICS)

我正在尝试解决多class图像识别问题(7 classes,互斥)(一个数据点只属于一个class),one-hot使用 encoding 和 Output Softmax Activation 用于 Multi-class(这是正确的还是我应该选择 Sigmoid?)。 损失函数是二元交叉熵(分类交叉熵用于多标签{相互包含})。 那么什么准确性指标适用于此? 'accuracy' 或 categoricalAccuracy()?

example out--> 显示 'accuracy' 高但 categoricalAccuracy 很差

Epoch 1/10
 99/100 [============================>.] - ETA: 4s - loss: 0.5722 - acc: 0.8334 - categorical_accuracy: 0.1504 - auc_2: 0.5117 - mean_absolute_error: 0.2434

如果这个模型在分类准确性方面很差,如何让它变得更好?

您应该使用 CategoricalAccuracy。它适用于 one-hot 标签和 类 的预测对数。

我认为你应该使用 CategoricalCrossentropy 作为损失函数。当你有两个 类.

时使用 BinaryCrossentropy