深度学习01-Pytorch实现mnist手写数字识别

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客**
>- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)**

一、我的环境

  • 电脑系統:Windows 10

  • 语言环境:Python 3.8.0

  • 编译器:Jupyter Lab

  • 深度学习环境:torch==1.12.1+cu113 torchvision==0.13.1+cu113

二、 前期准备

1. 导入模块

2. 导入数据

  

torchvision.datasets是Pytorch自带的一个数据库,我们可以通过代码在线下载数据,这里使用的是torchvision.datasets中的MNIST数据集。下载mnist数据集,数据集存放在'data'下。并人为划分训练集和测试集。

使用dataloader加载数据,并设置好基本的batch_size。

批量为32,每批加载的样本大小为32

torch.utils.data.DataLoader是Pytorch自带的一个数据加载器,结合了数据集和取样器,并且可以提供多个线程处理数据集。加载训练集和测试集,其中训练集每轮训练后随机打乱元素。

3、数据可视化

运行结果如下:

三、构建简单的CNN网络

重点:卷积层池化层的分布,核子的大小,激活函数的选择,全连接神经网络的结构(权重),类继承的顺序。搭建cnn网络是为了提取图片特征,之后对特征图进行分类(10类中取概率最大的为图片数字的类别)。

四、 训练与测试模型

这里采用随机批量优化,采用反向传播算法。

这里的(pred.argmax(1) == y).type(torch.float).sum().item()表示计算预测正确的样本数量,并将其作为一个标量值返回。这通常用于评估分类模型的准确率或计算分类问题的正确预测数量。

测试函数和训练函数大致相同,但是由于不进行梯度下降对网络权重进行更新,所以不需要传入优化器。

训练5轮,计算每轮训练集和测试集的准确率和损失。

五、 结果可视化

运行结果如下图所示:

整体轮数可能不太够。

六、 个人总结

1.动手跟着教案敲一遍代码,把代码跑通

2.理解了代码各个部分的含义,补习了一些神经网络的基础知识

        


  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值