Python 我的CNN结果总是0或1,从来没有一个百分比。为什么?

Python 我的CNN结果总是0或1,从来没有一个百分比。为什么?,python,machine-learning,keras,deep-learning,conv-neural-network,Python,Machine Learning,Keras,Deep Learning,Conv Neural Network,我正在使用Keras构建一个多类别多标签对象识别CNN,它将给出图像属于哪个类别的置信度百分比。不幸的是,当我运行model.predict()方法时,我似乎无法让它给出百分比,而只能给每个类一个0或1的值。我的代码是否有问题,或者只是没有经过足够的图像训练?(是的,我正在使用模型从未见过的新照片进行预测。) 培训产出: # Epoch 10/10 # 237/237 [==============================] - 14s 58ms/step - loss: 1.3194e

我正在使用Keras构建一个多类别多标签对象识别CNN,它将给出图像属于哪个类别的置信度百分比。不幸的是,当我运行
model.predict()
方法时,我似乎无法让它给出百分比,而只能给每个类一个0或1的值。我的代码是否有问题,或者只是没有经过足够的图像训练?(是的,我正在使用模型从未见过的新照片进行预测。)

培训产出:

# Epoch 10/10
# 237/237 [==============================] - 14s 58ms/step - loss: 1.3194e-04 - acc: 1.0000 - val_loss: 0.0312 - val_acc: 0.9860
这些是我的损失/准确性

[[1. 1. 0. 0.]]
这是预测新图像的示例结果。我甚至给我的模型提供了高度不相关的图像,这些图像仍然具有相似的结果


我意识到237张照片是一个非常小的训练池;在接下来的几个月里,我将增加图像数据库。

要获得百分比输出,请在输出层中使用softmax激活函数来获得概率。你不应该以任何方式使用sigmoid激活函数,因为它们存在消失梯度问题

classifier = Sequential()

classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 
'relu'))

classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Dropout(0.25))

classifier.add(Flatten())

classifier.add(Dense(units = 128, activation = 'relu'))

classifier.add(Dense(units = 64, activation = 'relu'))

classifier.add(Dense(units = 4, activation = 'softmax'))

另一个可能的原因可能是数据缩放。有关解决方案,请参阅。

要获得百分比输出,请在输出层中使用softmax激活函数来获取概率。你不应该以任何方式使用sigmoid激活函数,因为它们存在消失梯度问题

classifier = Sequential()

classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 
'relu'))

classifier.add(MaxPooling2D(pool_size = (2, 2)))

classifier.add(Dropout(0.25))

classifier.add(Flatten())

classifier.add(Dense(units = 128, activation = 'relu'))

classifier.add(Dense(units = 64, activation = 'relu'))

classifier.add(Dense(units = 4, activation = 'softmax'))

另一个可能的原因可能是数据缩放。请参阅了解解决方案。

我尝试将CNN的输出层重新设置为softmax,但仍然得到0或1的结果。这就是我最初没有使用softmax的原因。您的数据集是什么。请描述分类任务。同时检查此链接我的任务是将叶组织分为4个疾病类别。我只是检查了一下链接,意识到我没有重新缩放我的预测图像。问题似乎已经解决了。非常感谢。接受答案表明你找到了解决方案。我尝试用softmax输出层重新训练CNN,但仍然得到0或1的结果。这就是我最初没有使用softmax的原因。您的数据集是什么。请描述分类任务。同时检查此链接我的任务是将叶组织分为4个疾病类别。我只是检查了一下链接,意识到我没有重新缩放我的预测图像。问题似乎已经解决了。非常感谢。接受答案以表明您找到了解决方案。