使用model.predict()使用keras输出概率分数

时间:2018-05-01 11:34:07

标签: python keras

我有一个用于图像分类的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要求将图像放在标识其类的文件夹中,因此,它仅与验证和测试相关。我想为新的未知图像或图像输出此分数。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我不确定这是否是版本问题,但我确实获得了概率分数。

我使用虚拟网络来测试输出:

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层实际上返回浮点值时。

我希望这会有所帮助。