卷积神经网络手写数字识别的实验方案说明

        本实验方案代码文件在这里

        首先需要导包,将于神经网络的相关包导入进来。接下来需要进行一些常用变量的定义。定义完了之后就是进行正式的开始了,我们首先需要下载数据并对数据进行预处理,定义预处理函数,这些预处理函数依次存放在Compose函数中。接着就是将下载的数据分为两个数据集,保存数据到数据加载器定义的变量中。

        接下来就是创建一个实例,让其运行测试集中的一部分代码便于我们查看数据集是否出错。下一步就是创建卷积神经网络模型,一个继承父类nn.model的类。在初始化方法中调用父类的初始化方法给类中各种变量赋值,接着自定义自己的卷积神经网络:首先定义一个卷积设置通道为1,一个输入6个输出,padding2,步长为1;为了让minist28*28)数据集能输入卷积神经网络(32*32),需要加上padding2的一个外边值,否则数据集无法进行输入。接着定义第二个卷积,6个输入,16个输出,这个时候padding就为0了。需要注意的是我们都是以5*5的矩阵进行卷积的。接下来就是定义全连接神经网络的变量了:第一层输入层的变量为16*5*5个,隐藏层有两层分别为120个、84个,输出层为10个结果。接着我们要定义forward方法来实现反向传播:第一步将传过来的图片进行卷积,结果在进行池化,在进行第二次卷积。得到的结果在进行第二次池化到这里会得到16张特征图片,我们这个时候再将这是十六张图片连接在一起进行降维处理,降维之后就得到了一个全连接神经网络的输入层,这个时候在进行全连接神经网络的计算得到的结果就是预测的结果,这里的运算都是借助pytorch给我们分装好的函数进行的。到这里神经网络就定义完了,接下来就是实例化并且进行训练和测试。实例化神经网络,定义损失函数SGD和优化器。

        训练过程:从for循环数据集,从数据加载器中得到的img、和lable,先试用Variableimglable处理,使用定义的网络模型预测结果,使用损失函数计算误差,计算分类的准确率acc,最后在进行反向传播。训练集训练完了就可以将模型改成预测模式了,也是和训练差不多,只不过这里是误差准确率,并且这里也没有了反向传播。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算了吧,你不配

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值