import random
random.seed(1)  # 设置随机种子,保证每次运行代码时选取的图片相同

# 随机选择6张图片
test_images = random.sample(os.listdir(val_dir), 6)  # 从 val_dir 目录中随机选择 6 张图片

# 创建一个2x3的子图,指定图像大小
fig, axs = plt.subplots(2, 3, figsize=(12, 8))  # 创建一个包含 6 个子图的图,每个子图的大小为 12x8 英寸
axs = axs.flatten()  # 将子图列表展开成一维数组

# 对每张图片进行预测并显示
for i, img_name in enumerate(test_images):  # 遍历随机选择的图片列表
    # 加载图像并将其调整为指定的大小
    img = image.load_img(os.path.join(val_dir, img_name), target_size=(IMG_HEIGHT, IMG_WIDTH))  # 加载图片,并将其调整为 IMG_HEIGHT x IMG_WIDTH 大小
    img = image.img_to_array(img)  # 将图片转换为 NumPy 数组
    img = img / 255.0  # 归一化图片,将像素值缩放到 0 到 1 之间
    img = np.expand_dims(img, axis=0)  # 在图片张量前面添加一个维度,使其符合模型的输入要求

    # 进行预测
    prediction = model.predict(img)  # 使用训练好的模型对图片进行预测
    predicted_class = classes[np.argmax(prediction)]  # 获取预测结果中概率最大的类别

    # 在子图中显示图像和预测结果
    axs[i].imshow(image.load_img(os.path.join(val_dir, img_name)))  # 在子图中显示图片
    axs[i].set_title(f'Predicted: {predicted_class}')  # 设置子图的标题,显示预测结果
    axs[i].axis('off')  # 关闭子图的坐标轴

plt.tight_layout()  # 自动调整子图之间的间距,避免子图重叠
plt.show()  # 显示图像

原文地址: https://www.cveoy.top/t/topic/pitB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录