gpt4 book ai didi

python - Keras - model.predict 返回类而不是概率

转载 作者:太空狗 更新时间:2023-10-30 01:11:42 25 4
gpt4 key购买 nike

我加载了我训练的模型。这是训练的最后一层:

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(3))
model.add(Activation('sigmoid'))

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

之后,我尝试对随机图像进行预测。所以我加载模型:

#load the model we created
json_file = open('/path/to/model_3.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
# load weight into model
loaded_model.load_weights("/path/to/model_3.h5")
print("\nModel successfully loaded from disk! ")


# Predicting images
img =image.load_img('/path/to/image.jpeg', target_size=(224, 224))
x = image.img_to_array(img)
x *= (255.0/x.max())
image = np.expand_dims(x, axis = 0)
image = preprocess(image)
preds = loaded_model.predict_proba(image)
pred_classes = np.argmax(preds)
print(preds)
print(pred_classes)

作为输出,我得到了这个:

[[6.0599333e-26 0.0000000e+00 1.0000000e+00]]
2

这基本上就像我得到 [0 0 1]predict_classes。虽然我想得到概率。所以我正在搜索类似 [0.75 0.1 0.15] 的输出。有什么想法吗?

最佳答案

如果你想将概率作为网络的输出,你只需要使用 softmax 激活函数而不是 sigmoid

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(3))
model.add(Activation('softmax'))

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

关于python - Keras - model.predict 返回类而不是概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48624974/

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