手写数字识别:LeNet

本文介绍手写数字识别的深度学习工程结构,重点讲解如何利用LeNet处理MINIST数据集。首先,对MINIST数据进行预处理,然后搭建包含6个部分的LeNet网络,并通过随机张量测试模型。接着,详细阐述了模型的训练和测试过程。
摘要由CSDN通过智能技术生成

手写数字识别:LeNet

深度学习工程的结构

常见的深度学习工程文件排列

project/  #project 代表工程目录
    data.py  #负责数据导入的模块。包含和数据载入相关的 Dataset 类和 DataLoader 类
    utils.py  #包含深度学习工程中常用的一些工具。比如,对于模型的模块和参数的一些预处理等
    model.py  #模型的核心部分。所有的模型中包含的模块和子模块一般都在这个文件中定义
    train.py  #代表模型训练部分的代码
    inference.py  #代表模型预测(推断)部分的代码
    csrc/  #由于 Pytorch 代码中可以引入 C/C++ 语言编写 的模块,加速模块的计算速度,
           #或者实现一些 Pytorch 没有的模块,因此,在一些情况下可以引入 C/C++ 语言编写的代码,
           #并且使用 pybind1 库导入供 Pytorch 使用,在这种情况下,csrc 目录就可以用来放置对应的代码,
           #编译后的动态链接库可以到处为接口,以包的形式提供给 Pytorch 导入和调用

MINIST数据集的准备

首先是前面所述的 MINIST 数据集的载入。Lenet 神经网络的输入是 32 * 32,因此这里首先需要把 MINIST的输入 28 * 28 进行缩放,使其大小为 32 * 32。

# data.py
from torchvision.datasets import MNIST
import torchvision.transforms as transforms
from torch.utils.data import DataLoader

data_path = './data'
data_train = MNIST(data_path, train=True, download=True,
                   transform=transforms.Compose([
                        transforms.Resize((32, 32)),
                        transforms.ToTensor()
                        ]))
data_test = MNIST(data_path, train=False, download=True,
                  transform=transforms.Compose([
                        transforms.Resize((32, 32)),
                        transforms.ToTensor()
                        ]))
data_train_loader = DataLoader(data_train, batch_size=256,shuffle=True)  #num_workers=0
data_test_loader = DataLoader(data_test, batch_size=1024)  ##num_workers=0

有了数据集之后,使用一些画图工具(如 Matlplotlib)对 MINIST 数据集的输出绘图,检查输出的图像是否正确

# MINIST 数据展示代码
import matplotlib.pyplot as plt

figure = plt.figure
num_of_image = 60

for imgs, targets in data_train_loader:
    break

for index in range(num_of_image):
    plt.subplot(6, 10, index+1)
    plt.axis('off')
    img = imgs[index, ...]
    plt.imshow(img.squeeze(), cmap='gray_r')

plt.show()

在这里插入图片描述

LeNet 网络的搭建

LeNet 整个神经网络一共有6个组成部分,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值