张量流图像分类 - 输入图像的概率预测

时间:2018-03-06 11:47:27

标签: python tensorflow keras

我使用Keras训练我的模型使用张量流进行图像分类,这是我的模型试图预测输入图像的代码。

import numpy as np
from keras.preprocessing import image
test_image = image.load_img('C:/Python/3.png', target_size = (64, 64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = classifier.predict(test_image)
training_set.class_indices
if result[0][0] == 1.0:
    prediction = 'Anthracite'
if result[0][0] == 2.0:
    prediction = 'Bituminous'
if result[0][0] == 3.0:
    prediction = 'Lignite'
else:
    prediction = 'Peat'

基本上,我正在研究一个图像分类问题,我通过提供4种煤来训练我的模型,而我的预测几乎达到了80%,因为我训练了25个时代的模型。

我需要的是,每种煤的概率,比方说,如果我的预测说:它是褐煤,它还应该告诉我它是褐煤的准确性的概率,需要帮助......

2 个答案:

答案 0 :(得分:0)

此修改将为您提供给定图像的每个类的概率。

classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Flatten())
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 4, activation = 'softmax'))
classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])

在这里,您需要使用one hot encoding和交叉熵作为损失函数进行训练。

然后在测试时间内如果您传递图像,您将获得一个输出向量(4维),每个向量表示图像属于其各自类的概率。

转换为单热编码:keras.utils.to_categorical功能会有所帮助。

如果您想使用预先训练过的模型进行微调,可以查看我使用瓶颈来加速微调的repository

答案 1 :(得分:0)

您可以使用classifier.predict_proba api。