我有一个用于图像分类的 cnn 模型,它使用 sigmoid 激活函数作为最后一层
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
input_shape=(1500, 1500, 3)))
..........
model.add(layers.Dense(1, activation='sigmoid'))
这些图像属于两个类别。当我使用model.predict()
时在图像上我得到 0 或 1。但是,我想获得像 0.656 这样的概率分数,例如当我使用 model.predict_generator()
时,它输出这些分数。然而,predict_generator
要求将图像放置在标识其类别的文件夹中,因此,它仅与验证和测试相关。我想输出一个或多个新的未知图像的分数。我怎样才能做到这一点?
最佳答案
我不确定这是否是版本问题,但我确实得到了概率分数。
我使用虚拟网络来测试输出:
from keras import layers
from keras import models
from keras import __version__ as used_keras_version
import numpy as np
model = models.Sequential()
model.add(layers.Dense(5, activation='sigmoid', input_shape=(1,)))
model.add(layers.Dense(1, activation='sigmoid'))
print((model.predict(np.random.rand(10))))
print('Keras version used: {}'.format(used_keras_version))
产生以下输出:
[[0.252406 ]
[0.25795603]
[0.25083578]
[0.24871194]
[0.24901393]
[0.2602583 ]
[0.25237608]
[0.25030616]
[0.24940264]
[0.25713784]]
Keras version used: 2.1.4
真的很奇怪,你只得到 0 和 1 的二进制输出。特别是当 sigmoid 层实际上返回浮点值时。
我希望这能有所帮助。
关于python - 使用 model.predict() 输出 keras 的概率分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115762/