Pytorch入门一:卷积神经网络实现MNIST手写数字识别

目录

1. pytorch介绍

2. 卷积神经网络(CNN)

3. PyTorch中的卷积神经网络

3.1卷积层:nn.Conv2d()

3.2 池化层:nn.MaxPool2d()

4. 实现MNIST手写数字识别

4.1 引入库函数

4.2 设置超参数

4.3 加载数据集

4.4 设计CNN

4.5 训练前准备

4.6 训练

4.7 预测 

4.8 运行

5 结果


1. pytorch介绍

Pytorch是Torch7团队开发的,与Torch的不同之处在于Pytorch使用了Python作为开发语言,同样说明它是一个以Python优先的深度学习框架,它不仅能够实现强大的GPU加速,同时还支持动态神经网络,这是TensorFlow等很多主流框架不支持的。而且Pytorch可以轻松扩展,近两年有赶超TensorFlow的势头

Pytorch中有两种变量类型,一种是Tensor,一种是Variable。并且Tensor和Numpy之间可以自由转换。

 

2. 卷积神经网络(CNN)

卷积神经网络(CNN——Convolutional Neural Network)是一种前馈神经网络。长期以来是图像识别领域的核心算法之一

这是一张卷及神经网络机构示意图,让我们理解下各部分:

  • 输入层(Input Layer):对于我们人来说输入的是一张图片,但是对于电脑来说输入的是一个矩阵类型的数据,这些数据代表着这张图片的像素值
  • 卷积层(Convolution Layer):对输入的数据进行特征提取,每个卷积核每次从一个小区域提取到一个特征值,所有的特征值组合起来就得到了一个特征图,当用多个卷积核对输入数据进行特征提取时,就得到了多个特征图。这个卷积核我们称为(kernel)
  • 激活函数(Activation Function):在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端,引入激活函数是为了增加神经网络模型的非线性
  • 池化层(Pooling Layer):在不影响特征质量的情况下对图片进行压缩,以减少参数,池化主要有两种,一种是MaxPooling,一种是AvePooling。假设池化的内核是一个2*2的矩阵,采用MaxPooling则是输出其中的最大值,采用AvePooling则输出所有数据的平均值
  • 全连接层(Fully Connected Layer,简称FC):在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用
  • 输出层(Output Layer):卷积神经网络中输出层的上游通常是全连接层,因此其结构和工作原理与传统前馈神经网络中的输出层相同。对于图像分类问题,输出层使用逻辑函数或归一化指数函数(softmax function)输出分类标签 [。在物体识别(object detection)问题中,输出层可设计为输出物体的中心坐标、大小和分类 。在图像语义分割中,输出层直接输出每个像素的分类结果   

理解完卷积神经网络后,让我们来看下PyTorch中的卷积神经网络

 

3. PyTorch中的卷积神经网络

3.1卷积层:nn.Conv2d()

其参数如下:

参数 含义
in_channels 输入信号的通道数.
out_channels 卷积后输出结果的通道数.
kernel_size 卷积核的形状. 例如kernel_size=(3, 2)表示3X2的卷积核,如果宽和高相同,可以只用一个数字表示
stride 卷积每次移动的步长, 默认为1.
padding  处理边界时填充0的数量, 默认为0(不填充).
dilation 采样间隔数量, 默认为1, 无间隔采样
groups 输入与输出通道的分组数量. 当不为1时, 默认为1(全连接
bias 为 True 时, 添加偏置.

3.2 池化层:nn.MaxPool2d()

其参数如下:
 

参数 含义
kernel_siz
  • 28
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值