【PyTorch】在CIFAR10数据集上实现卷积神经网络LeNet-5

本文介绍了经典的卷积神经网络LeNet-5,包括其网络结构、工作原理,以及在CIFAR-10数据集上的应用。LeNet-5由Yann Lecun提出,具有卷积层、池化层和全连接层,适用于图像识别任务。此外,还提供了PyTorch实现LeNet-5的代码示例,并展示了在CIFAR-10数据集上进行训练和测试的过程,尽管准确率约为60%。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LeNet-5介绍

  1. 定义

    • LeNet 诞生于 1994 年,由 Yann Lecun 提出,是一种经典的卷积神经网络,是现代卷积神经网络的起源之一。Yann将该网络用于邮局的邮政的邮政编码识别,有着良好的学习和识别能力。LeNet 又称 LeNet-5,具有一个输入层,两个卷积层,两个池化层,3个全连接层(其中最后一个全连接层为输出层)
  2. 网络结构图

    XbpNV0.png

  3. 原理

    • C1 卷积层由 6 个大小为 5* 5 的不同类型的卷积核组成,卷积核的步长为 1,没有零填充,卷积后得到 6 个 28* 28 像素大小的特征图;
    • S2 为最大池化层,池化区域大小为 2* 2,步长为 2,经过S2 池化后得到6 个 14* 14 像素大小的特征图;
    • C3 卷积层由 16 个大小为 5* 5 的不同卷积核组成,卷积核的步长为 1,没有零填充,卷积后得到 16 个 10* 10 像素大小的特征图;
    • S4 最大池化层,池化区域大小为 2* 2,步长为 2,经过 S2 池化后得到 16 个 5* 5 像素大小的特征图;
    • C5 卷积层由120 个大小为 5* 5 的不同卷积核组成,卷积核的步长为 1,没有零填充,卷积后得到 120 个 1* 1 像素大小的特征图;将120 个 1* 1 像素大小的特征图拼接起来作为 F6 的输入;
    • F6 为一个由 84 个神经元组成的全连接隐藏层,激活函数使用sigmoid 函数;
    • 最后一层输出层是一个由10 个神经元组成的 softmax 高斯连接层,可以用来做分类任务

CIFAR10数据集

  1. 简介

    • CIFAR-10 是由 Hinton 的学生 Alex Krizhevsky 和 Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含 10 个类别的 RGB 彩色图 片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。图片的尺寸为 32×32 ,数据集中一共有 50000 张训练圄片和 10000 张测试图片
  2. 示例

    Xb9qX9.png

代码实现

  1. lenet5.py

    import torch
    from torch import nn
    
    class Lenet5(nn.Module):
        # for cifar10 dataset
        def __init__(self):
            super(Lenet5, self).__init__()
    
            # 网络结构
            self.conv_unit = nn.Sequential(
                # 输入x:[b, 3, 32, 32]
                # 不加 padding
                # 第一层,输入为 [b, 6, ]
                nn.Conv2d(3, 6, kernel_size = 5, stride = 1, padding = 0),
                nn.ReLU(),
                # Pooling层
                nn.MaxPool2d(kernel_size=2, stride=2, padding=0),
                # 第二个卷积层
                nn.Conv2d(6, 16, kernel_size=5, stride
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值