在 keras 模型指标中使用简单的“准确性”进行多类分类在技术上是错误的吗?我们应该使用 CategoricalAccuracy() 吗?
Posted
技术标签:
【中文标题】在 keras 模型指标中使用简单的“准确性”进行多类分类在技术上是错误的吗?我们应该使用 CategoricalAccuracy() 吗?【英文标题】:Is it technically wrong to use simple "accuracy" in keras model metrics for multi-class classification? Should we use CategoricalAccuracy()? 【发布时间】:2021-02-11 04:29:32 【问题描述】:因此,根据 Keras 的定义,简单的“准确度”指标比较 2 个标记的类是正确的。 代码sn-p
---------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)
我正在尝试解决多类图像识别问题(7类,互斥)(一个数据点只属于一个类),使用one-hot编码和Output Softmax Activation用于Multi-class(是这是正确的还是我应该选择 Sigmoid?)。 损失函数是二元交叉熵(分类交叉熵用于多标签相互包容)。 那么这里适用的准确度指标是什么? 'accuracy' 还是 categoricalAccuracy()?
示例输出--> 显示“准确度”很高,但 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
如果这个模型在分类准确率方面很差,如何让它变得更好?
【问题讨论】:
【参考方案1】:您应该使用 CategoricalAccuracy。它适用于 one-hot 标签和类的预测 logits。
我认为您应该使用 CategoricalCrossentropy 作为损失函数。当你有两个类时使用 BinaryCrossentropy。
【讨论】:
以上是关于在 keras 模型指标中使用简单的“准确性”进行多类分类在技术上是错误的吗?我们应该使用 CategoricalAccuracy() 吗?的主要内容,如果未能解决你的问题,请参考以下文章