使用 PyTorch 实现并训练 LeNet-5 模型

LeNet-5 是由 Yann LeCun提出的卷积神经网络,在论文《Gradient-Based Learning Applied To Document Recognition》中可以看到 LeNet-5 网络模型的结构,如下图所示: 通过上图可以看到,从左至右网络各个层顺序连接: 输入层 :图片大小 32×32 卷积层1 :输入通道 1,输出通道 6,卷积核大小 5×5,步长 1 池化层 :输入通道 6,输出通道 6,过滤器大小 2×2,步长 2 卷积层2 :输入通道 6,输出通道 16,卷积核大小 5×5, 步长 1 池化层2 :输入通道 16,输出通道 16,过滤器大小 2×2,步长 2 全连接层1:节点数 120 全连接层2:节点数 84 全连接层3:节点数 10 我们只需要准备好数据集,并基于上图连接结构,使用 PyTorch 搭建 CNN 网络的结构并进行训练和使用。 实现 LeNet-5 模型 基本环境配置如下: Python:3.11.3 PyTorch:2.0.1(torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2) 1 准备数据集 使用经典的手写数字数据集 MNIST,可以直接通过 PyTorch 的 datasets.MNIST 下载并准备数据: import torch from to

经典的卷积神经网络

这里,我们主要简单介绍在卷积神经网络发展过程中,一些经常用的改进模型,主要包括 LeNet-5、AlexNet、VGGNet、GoogLeNet、ResNet、DenseNet、ZFNet 这 7 个模型。本文不会非常深入讲解各个 CNN 模型,而是希望能够快速了解到各个模型起源,基本结构是什么样子,以及其它模型相比有什么明显的不同。 LeNet-5 LeNet-5 是第一个由 Yann LeCun 提出的卷积神经网络,它也是最基础的一个卷积神经网络,网络结构可以参考论文《Gradient-Based Learning Applied To Document Recognition》,如下图所示: LeNet-5 是一个 8 层 CNN 网络(包含输入层),其中包含卷积层块和全连接层块两个部分。卷积层用来识别图像里的空间模式,如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性,卷积层块由两个这样的基本单位重复堆叠构成。当卷积层块的输出传入全连接层块时,全连接层块会将小批量中每个样本变平(Flatten)。 AlexNet AexNet 模型的名字来源于论文第一作者 Alex Krizhevsky 的名字,使用了 8 层卷积神经网络,并以很大的优势赢得了 ImageNet 2012 图