我加载了我训练过的模型。 这是培训的最后一层:
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]
之类的输出。
有什么想法吗?
答案 0 :(得分:4)
如果您想将概率作为网络的输出,您只需要使用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'])