gpt4 book ai didi

python - 在 Keras 中获得预测

转载 作者:太空狗 更新时间:2023-10-29 21:10:49 25 4
gpt4 key购买 nike

我已经成功地在 Keras 中训练了一个简单的模型来对图像进行分类:

model = Sequential()

model.add(Convolution2D(32, 3, 3, border_mode='valid', input_shape=(img_channels, img_rows, img_cols),
activation='relu', name='conv1_1'))
model.add(Convolution2D(32, 3, 3, activation='relu', name='conv1_2'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Convolution2D(64, 3, 3, border_mode='valid', activation='relu', name='conv2_1'))
model.add(Convolution2D(64, 3, 3, activation='relu', name='conv2_2'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(nb_classes, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

我还可以使用

预测图像类别
y_pred = model.predict_classes(img, 1, verbose=0)

但是 y_pred 的输出始终是二进制的。这似乎也是使用 predict_probapredict 时的情况。我的输出是这种形式

[[ 1.  0.  0.  0.]]
[[ 0. 1. 0. 0.]]

这行得通,但我希望每个分类都有一个概率百分比,例如

[[ 0.8  0.1  0.1  0.4]]

我如何在 Keras 中获得它?

最佳答案

Softmax 可能会产生类似“one-hot”的输出。考虑以下示例:

# Input; Exponent; Softmax value 
20 485165195 0.99994
9 8103 0.00002
5 148 0.00000
10 22026 0.00005
------------------------
# Sum 485195473 1

由于指数函数增长非常快,softmax 开始产生类似 one-hot 的输出,从数量级 1 开始。在 Keras 中 implementation of the softmax function从输入中减去最大值,但在上述情况下不会有任何区别。

解决此问题的可能方法:

  1. 确保输入图像已重新缩放,以便像素值介于 01 之间。

  2. 添加一些 regularizers到你的模型。

关于python - 在 Keras 中获得预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38192354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com