基本信息
文件名称:深度学习 实验指导书 实验1:手写数字识别实验指导书.docx
文件大小:256.57 KB
总页数:6 页
更新时间:2025-05-22
总字数:约1.47千字
文档摘要

深度学习实验指导书

实验一手写数字识别

PAGE2

PAGE2

实验一手写数字识别

实验目的

掌握卷积神经网络基本原理;

掌握PyTorch(或其他框架)的基本用法以及构建卷积网络的基本操作;

了解PyTorch(或其他框架)在GPU上的使用方法。

实验要求

搭建PyTorch(或其他框架)环境;

构建一个规范的卷积神经网络组织结构;

在MNIST手写数字数据集上进行训练和评估,实现测试集准确率达到98%及以上;

按规定时间在课程网站提交实验报告、代码以及PPT。

实验原理(以PyTorch为例)

PyTorch基本用法:

使用PyTorch,必须了解PyTorch:

张量的创建与使用

数据创建和数据加载

数据增强

网络模型创建

使用torch.autograd自动求梯度

模型参数优化

模型加载与保存

PyTorch的前身是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口。它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络。

卷积神经网络:

典型的卷积神经网络由卷积层、池化层、激活函数层交替组合构成,因此可将其视为一种层次模型,形象地体现了深度学习中“深度”之所在。

卷积操作

卷积运算是卷积神经网络的核心操作,给定二维的图像I作为输入,二维卷积核K,卷积运算可表示为:

(1)

给定5×5输入矩阵、3×3卷积核,相应的卷积操作如图1所示。

图1卷积运算

在使用TensorFlow等深度学习框架时,卷积层会有padding参数,常用的有两种选择,一个是“valid”,一个是“same”。前者是不进行填充,后者则是进行数据填充并保证输出与输入具有相同尺寸。

构建卷积或池化神经网络时,卷积步长也是一个很重要的基本参数。它控制了每个操作在特征图上的执行间隔。

池化操作

池化操作使用某位置相邻输出的总体统计特征作为该位置的输出,常用最大池化(max-pooling)和均值池化(average-pooling)。池化层不包含需要训练学习的参数,仅需指定池化操作的核大小、操作步长以及池化类型。池化操作示意如图2所示。

图2池化操作

激活函数层

卷积操作可视为对输入数值进行线性计算发挥线性映射的作用。激活函数的引入,则增强了深度网络的非线性表达能力,从而提高了模型的学习能力。常用的激活函数有sigmoid、tanh和ReLU函数。

实验所用工具及数据集

工具

Anaconda、PyTorch

(PyTorch安装教程参考:PyTorch官网:/)

数据集

MNIST手写数字数据集

(下载地址及相关介绍:/exdb/mnist/)

实验步骤与方法(以PyTorch为例)

安装实验环境,包括Anaconda、PyTorch,若使用GPU还需要安装cuda、cudnn;

下载MNIST手写数字数据集;

加载MNIST数据;

构建模型;

用class类来建立CNN模型

CNN流程: 卷积(Conv2d)-激励函数(ReLU)-池化(MaxPooling)-

卷积(Conv2d)-激励函数(ReLU)-池化(MaxPooling)-

展平多维的卷积成的特征图-接入全连接层(Linear)-输出

创建优化器和损失函数;

训练和评估模型。