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

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

最佳答案

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

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

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/

相关文章:

python - 迭代 pandas 数据框中的行并匹配列表字典中的值以创建新列

python - Keras 将固定大小的密集层与动态 Conv2D 层融合

keras - Keras 中的 ResNet50v2

r - 如何从概念上思考标记化词和词嵌入之间的关系?

python - 如何在 Keras 中声明多输入 LSTM 模型?

python - 值错误 : Too many values to unpack Django

python - 使用 select 处理多个请求

python - 在 Python 中对 1M 记录进行排序的最佳方法

Keras:flow_from_directory 在 fit_generator 调用期间保存了太多图像

python - 分析在 Mod_wsgi 上运行的 Python 脚本