使用CNN预测图像类别

时间:2020-05-18 11:19:22

标签: tensorflow keras prediction

我试图在经过训练的模型上预测单个图像的类,但是却得到了奇怪的输出,所以这是我的代码:

from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
import matplotlib.pyplot as plt
import numpy as np
import os


def load_image(img_path, show=False):
  img = image.load_img(img_path, target_size=(300, 300))
  img_tensor = image.img_to_array(img)                    
  img_tensor = np.expand_dims(img_tensor, axis=0)         
  img_tensor /= 255.                                      

  if show:
    plt.imshow(img_tensor[0])
    plt.axis('off')
    plt.show()

  return img_tensor


if __name__ == "__main__":
  # load model
  model = load_model("model1.h5")

  # image path
  img_path = 'dog.jpg' # dog

  # load a single image
  new_image = load_image(img_path, True)

  # check prediction
  pred = model.predict(new_image)
  print(pred)

但是我得到[[0.8189566 0.18104333]]作为输出。但是我有0和1类。 可能是因为未在任何地方指定批次大小吗?

1 个答案:

答案 0 :(得分:0)

使用model.predict(new_image),您可以获得每个测试图像属于特定类别的概率

要获取输出类别,您需要选择预测的最大概率类别:

np.argmax(pred, axis=1)