matlab朴素贝叶斯手写数字识别_Pytorch 手写数字识别-MINIST 数据集训练

6e9901c85da04e0d7005183623c99536.png

CNN
前期文章我们分享了tensorflow 的手写数字识别的训练以及识别过程,有网友私信是否写一下pytorch训练识别过程,本期文章我们来分享一下pytorch的手写数字训练人工智能TensorFlow(十六)MNIST手写数字识别
说到图片识别就不得不提卷积神经网络,我们会在后期详细介绍,或者参考小编往期的文章
读懂卷积神经网络

910f1786bf729809571cc5b4b641fb5c.png

https://tensorspace.org/
pytorch自从发布了1.0版本后,得到了广大网友的欢迎与喜爱,本期我们利用pytorch来重构tensorflow的手写数字识别的代码,本期是训练篇,识别篇我们后期分享。pytorch的安装可参考《每天一分钟,python一点通》教程,有关pytorch的知识点,也会在《每天一分钟,python一点通》专栏分享,pytorch的手写数字识别,跟tensorflow代码思路几乎一样,若你了解tensorflow的代码训练过程,本期便很容易理解了1、导入第三方库

03c1adb60903412d717014c64bfd29ff.png

2、设置测试数据集与训练数据集

e27a24a60f74be3b99c803b4b5aac43b.png

3、提取数据集数据
#27 使用dataloader函数从训练集数据中提取数据,每步神经网络提取50个数据来进行训练
# 31 从测试集数据中提取2000个图片数据
# 32 提取相对应的数字标签

57c7382265ee6a174b21787ca3abc62a.png

4、定义神经网络

652f2104fd9899bb362e03936d60d971.png

aca49c89b552445aafbed50b24cf65aa.png

第一层卷积:
此结构时pytorch标准的模板结构,本神经网络一共有2层,若了解tensorflow的小伙伴可以很容易理解此神经结构,第一层,我们输入minist的数据集,minist的数据图片是一维 28*28的图片,所以第一层的输入(1,28,28),高度为1,设置输出16通道,使用5*5的卷积核对图片进行卷积运算,每步移动一格,为了避免图片尺寸变化,设置pading为2,则经过第一层卷积就输出(16,28,28)数据格式
再经过relu与maxpooling (使用2*2卷积核)数据输出(16,14,14)第二层卷积:
第二层此代码是简化写法,函数中的参数与第一层一一对应
nn.Conv2d(16, 32, 5, 1, 2)
in_channels=16, # input height(输入通道数)
out_channels=32, # n_filters(卷积核,或者输出通道数)
kernel_size=5, # filter size(卷积核大小)
stride=1, # filter movement/step(卷积部数)
padding=2, # 如果想要 con2d 出来的图片长宽没有变化, (外部边缘补0)
# padding=(kernel_size-1)/2 当 stride=1
经过第二层卷积得到(32,14,14)数据结构
再次经过relu与maxpooling (使用2*2卷积核)数据输出(32,7,7)数据结构全连接层
最后使用nn.linear()全连接层进行数据的全连接数据结构(32*7*7,10)
10: 0--9一共10个分类
以上便是整个卷积神经网络的结构,
大致为:input-卷积-Relu-pooling-卷积-Relu-pooling-linear-output
卷积神经网络建完后,使用forward()前向传播神经网络进行输入图片的训练
def forward(self, x):
x = self.conv1(x) # 第一层卷积
x = self.conv2(x) # 第二层卷积
x = x.view(x.size(0), -1) # 展平多维的卷积图成 (batch_size, 32 * 7 * 7)
output = self.out(x) # 全连接
return output5、训练神经网络

6f60ba18e681e5fdf7721c956efac0ba.png


pytorch的训练跟tensorflow的训练类似,我们建立loss函数,建立优化器,训练的目的是使用优化器让loss梯度下降,使loss越来越小,我们每50步查看一下神经网络的训练结果6、测试神经网络
神经网络训练完成后,我们使用测试集的数据,进行一下神经网络的测试,看看训练的结果

5fd396af07fd67c42990b98a31d05086.png

7、保存神经网络
最后我们保存一下神经网络,以便后期识别数字使用

0076fcd2623550111b1372cd99ea716d.png


以上便是整个神经网络的手写数字识别过程,我们保存了神经网络的训练参数,后期我们会是使用训练好的参数,进行神经网络的具体图识别

8ffcd6cd6f34d1aa5154c0932602c8f4.png


从训练结果看,第一次的loss很大,精度很低,随着训练的步数增加loss也越来越小,精度也越来越大
从测试集中提取了10个数据,其预测结果完全正确

3f5d5945ac0a6cc012d6cc0e33b97a49.png

http://scs.ryerson.ca/~aharley/vis/conv/
小伙伴们可以使用在线3D可视化网站,查看CNN的结构小编开发了小程序,可以体验不同的AI工具微&*信搜索:启示AI科技体验不一样的AI工具

126db8a022be3b944cf8e37cb30bb6be.png

微信搜索小程序:AI人工智能工具

091af1c0cce7cc62c2e33f2932971c05.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值