pytorch之拿训练好的LeNet模型测试自己的手写图片预测失败

用MNIST的训练集训练的LeNet,这里就不展示代码了
直接加载保存好的模型

lenet = torch.load('resourses/trained_model/LeNet_trained.pkl')

测试代码附上

print("Testing")
#定义转换操作
#将测试图片读入并transform后传入模型
test_images = Image.open('resourses/LeNet_test/0.png')
img_to_tensor = transforms.Compose([
    transforms.Resize(32),
    transforms.Grayscale(num_output_channels=1),
    transforms.ToTensor(),
    transforms.Normalize([0.5], [0.5])])
input_images = img_to_tensor(test_images).unsqueeze(0)
#如果cuda可用,将模型及数据搬到cuda上进行计算
USE_CUDA = torch.cuda.is_available()
if USE_CUDA:
    input_images = input_images.cuda()
    lenet = lenet.cuda()
output_data = lenet(input_images)
#打印测试信息
test_labels = torch.max(output_data, 1)[1].data.cpu().numpy().squeeze(0)
print(output_data)
print(test_labels)

目前按照自己的图片基本上没有正确率,找不到任何原因,目前输出8的频率很高。

后来查阅了相关资料,有以下几点原因:

  1. 解析MNIST数据集,你会发现数据集里的图片是黑底白字,如:
    MNIST数据集
    而我们自定义的测试图片一般都是白底黑字,如:
    自定义测试图片
    故我将自定义的测试图片按像素取反后又重新进行了测试
    像素取反的代码如下:
from PIL import Image, ImageOps	#导包
image = Image.open('resourses/LeNet_test/0.png')
image_invert = ImageOps.invert(image)
image_invert.show()

经过像素取反后,测试的正确率达到百分之50到60,正确率仍然不理想,继续参考下面的原因

  1. MNIST数据集收录的都是外国人的字迹,外国人的手写风格、习惯和国人有些许不同,这也是影响测试正确率的一重大原因。但楼主目前没有测试过修改字体后图片测试的正确率。

欢迎大家补充潜在的原因。
附参考链接:https://www.zhihu.com/question/52047327

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值