使用Python语言, 用sys,os包实现MNIST手写数据集识别,修改程序代码,实现记录所有识别错误的图片信息,并且将所有识别错误的图片单独保存在一个指定的文件夹内,目前得到识别正确率为93.2%,求教如何保存错误图片信息
可以使用以下步骤来记录所有识别错误的图片信息,并将它们保存到一个指定的文件夹中:
在程序中引入os和sys包,并创建一个用于保存错误图片的文件夹,如"error_images"。
在测试数据集上进行预测,并将预测结果与真实标签进行比较,找出预测错误的图片。
将错误图片的文件名添加到一个列表中。
将错误图片从原始目录中复制到指定的错误图片文件夹中。
将错误图片的文件名列表保存到文件中,以备后续使用。
以下是实现上述步骤的Python代码:
python
import os
import sys
import numpy as np
from keras.datasets import mnist
from keras.models import load_model
from shutil import copyfile
(x_test, y_test), _ = mnist.load_data()
x_test = np.reshape(x_test, (len(x_test), 28, 28, 1))
x_test = x_test.astype('float32') / 255
model = load_model('mnist_model.h5')
if not os.path.exists('error_images'):
os.makedirs('error_images')
error_images = []
predictions = model.predict(x_test)
for i, (pred, true) in enumerate(zip(predictions, y_test)):
# Find index of predicted label
pred_label = np.argmax(pred)
# If prediction is incorrect, save image and add filename to list
if pred_label != true:
# Save image to error_images directory
filename = f"error_image_{i}.png"
copyfile(f"test_images/image_{i}.png", f"error_images/{filename}")
error_images.append(filename)
with open("error_image_filenames.txt", "w") as f:
f.write('\n'.join(error_images))
在上面的代码中,我们首先加载MNIST测试数据集并将其转换为模型输入格式。然后,我们加载预训练模型并创建一个目录来存储所有的错误图片。接下来,我们通过模型对测试数据集进行预测,并将每个预测结果与真实标签进行比较以找出错误的预测。当找到错误的预测时,我们将该图片从原始目录中复制到错误图片文件夹中,并将该文件名添加到错误图片列表中。最后,我们将所有错误图片的文件名保存到一个文件中,以备后续使用。
感谢感谢