人工智能与机器学习Pytorch手写数字识别-MINIST数据集识别篇

上期文章,我们分享了Pytorch手写数字的训练,当pytorch训练完成后,保存了训练的参数,方便本期使用预训练参数,进行手写数字的识别,我们准备一个手写数字的图片,可以自己在画图软件中,直接写个数字

手写数字

1、导入第三方库

导入第三方库

2、建立神经网络

神经网络的建立与上期分享的训练篇完全一致,本期不再介绍代码意思,小伙伴们可以参考上期文章

CNN神经网络建立

训练CNN神经网络

3、处理输入图片

在数字图像处理中,针对不同的图像格式有其特定的处理算法。

PIL九种不同模式:1,L,P,RGB,RGBA,CMYK,YCbCr,I,F

一、模式“RGB”转换为其他不同模式

1、模式”1”

为二值图像,非黑即白。但是它每个像素用8个bit表示,0表示黑,255表示白。下面我们将lena图像转换为“1”图像。

img=img.convert(“1”) 

2、模式“L”

为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换:

img=img.convert(“L”) 

L = R * 299/1000 + G * 587/1000+ B * 114/1000 

图片处理

#38 导入自己的图片

#39 转灰度

#41 图片大小设计为28*28 ,因为minist也是28*28

#45 提取每列像素点

#46 提取每个像素点

# 这里的0 代表的是黑,1 代表白,但是minist数据0代表白,1代表黑

# pix = 1.0 – pix # 格式化成minist数据

#50 整形成28*28数据

# 52转换为pytorch tensor数据

MINIST数据

4、使用神经网络预测手写数字

预测代码

# 56 使用一张图片,利用第三步的函数,把图片转换为pytorch能够使用的数据

# 57 新建一个CNN神经网络,我们采用CUDA来进行加速

# 58 pytorch使用load函数提取先前训练的神经网络(提取参数):可参考python一点通教程

# 59 使用eval函数展开model

# 60 把图片数据传入神经网络来进行预测

# 61 提取预测结果

5、查看运行预测结果

运行结果

我们输入的是5的图片,神经网络预测也是5