神经网络入门(手写体的识别torch+jupyter+Mnist数据集)

前言:本文记录一下深度学习的学习过程,之前虽然看过很多次相关的项目,但是一直没有养成记录的好习惯,就导致了边学边忘的后果,写这边博客就是为了记录一下自己的学习过程,加深一下对神经网络搭建流程的印象。

数据集的选择,因为本文就是一篇入门级的博客,所以这里数据集选择的是mnist数据集,相对简单、易懂。

话不多说,直接上代码:

第一步:直接导入mnist数据集,并打印看看结果

 结果如下:

可以看出,mnist数据集的训练集有5000张图象,其中每一张都是灰度图像,都是(28,28)的 。

第二步:将数据转换成tensor的格式,这样才能用于训练

 第三步:定义损失函数,这里只做了一个小测试,所以用的是nn.function,损失函数用的是交叉熵损失函数

 这里.mm就是相乘的意思,矩阵乘法,下面进行一个简单的测试,取了训练集的64个,用最简单的全连接层,也就y=kx+b,作为前线传播的,来计算64个样本的损失,可以看出,是完全没有问题的。

 第四步:最重要的一步,就是构建模型了,构建模型分为两部分,第一部分就是初始化模型,设定好你所需要的所有的层的输入和输出;第二部分就是写的前向传播过程,也就是整个网络的传播过程。

 这里采用的网络很简单,就两个全连接以及一个输出层,就不多做赘述了。网络结构如下:

可用name_parameters函数来打印网络的参数

 

 第五步:把训练集和验证集按照batch_size打包

 第六步:定义训练过程

值得注意的是,训练时需要加梯度下降,因为需要更新,而验证时只是起到一个检测的作用,不需要进行梯度下降

 

 在训练进行梯度更新时,要注意要把之前的梯度清零,因为torch的机制中梯度是累加的。

第七步:最后定义模型和优化器,进行训练

 

这里的25,就相当于epoch

结果如下:

 

 改进的方式有很多,加入dropout等等,这里就不在改了,下面总结一下代码的总体流程:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值