尝试获取经过训练的 CNN 模型的混淆矩阵时出现 ValueError
Getting ValueError when trying to obtain confusion matrix of trained CNN model
我有一个分类问题,我在其中训练了一个 CNN,现在我希望我能获得它的混淆矩阵。我尝试了以下方法:
from sklearn.metrics import confusion_matrix
y_pred = model.predict(x_test)
#Generate the confusion matrix
cf_matrix = confusion_matrix(y_test, y_pred)
print(cf_matrix)
但是我得到以下错误:
ValueError: Classification metrics can't handle a mix of unknown and continuous-multioutput targets
x_test
由 (84, 32, 32)
- 84 张形状为 32x32
的单色图像组成
有办法解决这个问题吗?
附录:模型总结(注:输出激活fn为softmax)
根据评论总结一下,有两个问题:
confusion_matrix
需要 class 标签,而不是具有 softmax 激活的密集层的 logits 输出。只需执行以下操作即可解决此问题:
y_pred = np.argmax(y_pred, axis=1)
y_true
被识别为具有 unknown
类型的目标(参见错误)。因此,请确保它具有正确的数据类型(即真实的 class 标签)。
我有一个分类问题,我在其中训练了一个 CNN,现在我希望我能获得它的混淆矩阵。我尝试了以下方法:
from sklearn.metrics import confusion_matrix
y_pred = model.predict(x_test)
#Generate the confusion matrix
cf_matrix = confusion_matrix(y_test, y_pred)
print(cf_matrix)
但是我得到以下错误:
ValueError: Classification metrics can't handle a mix of unknown and continuous-multioutput targets
x_test
由 (84, 32, 32)
- 84 张形状为 32x32
有办法解决这个问题吗?
附录:模型总结(注:输出激活fn为softmax)
根据评论总结一下,有两个问题:
confusion_matrix
需要 class 标签,而不是具有 softmax 激活的密集层的 logits 输出。只需执行以下操作即可解决此问题:
y_pred = np.argmax(y_pred, axis=1)
y_true
被识别为具有unknown
类型的目标(参见错误)。因此,请确保它具有正确的数据类型(即真实的 class 标签)。