人工智能与机器学习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