基于华为云的LeNet5的手写数字识别实验
- 实验目的
本实验,基于华为云MindSpore在MNIST数据集上开发和训练一个LeNet5模型,并验证模型精度;
- 了解如何使用MindSpore进行简单卷积神经网络的开发;
- 了解如何使用MindSpore进行简单图片分类任务的训练;
- 了解如何使用MindSpore进行简单图片分类任务的验证。
- 实验环境
ModelArts平台:Mindspore
- 实验内容及分析
- 数据集准备
从华为云OBS中下载MNIST数据集并解压数据集,并上传至云服务器中,MNIST是一个手写数字数据集,训练集包含60000张手写数字,测试集包含10000张手写数字,共10类。
- 导入实验环境
- 数据处理
- 对数据进行预处理
2)展示数据集中的几张图片,样式为32x32大小的手写图片。
代码:
结果:
如图所示,显示了4张大小为32x32的手写数字。
- 定义模型
LeNet5模型结构如下图所示:
LeNet-5由7层组成,分别是:
C1:第一个卷积层,使用6个5x5的卷积核对输入图像进行卷积,得到6个28x28的特征图。卷积核的步长为1,没有使用零填充。
S2:第一个平均池化层,使用2x2的池化区域对C1层的特征图进行下采样,得到6个14x14的特征图。池化区域的步长为2。
C3:第二个卷积层,使用16个5x5的卷积核对S2层的特征图进行卷积,得到16个10x10的特征图。卷积核的步长为1,没有使用零填充。²
S4:第二个平均池化层,使用2x2的池化区域对C3层的特征图进行下采样,得到16个5x5的特征图。池化区域的步长为2。
C5:第三个卷积层,使用120个5x5的卷积核对S4层的特征图进行卷积,得到120个1x1的特征图。卷积核的步长为1,没有使用零填充。
F6:第一个全连接层,将C5层的120个特征图展平为一个长度为120的向量,并连接到一个由84个神经元组成的隐藏层。激活函数使用sigmoid函数。
Output:输出层,是一个由10个神经元组成的softmax分类器,用于对输入图像进行分类。
为了适应LeNet-5模型的输入结构,我们需要将MNIST数据集中的28x28的图像扩展为32x32像素大小。
代码:
- 训练
使用MNIST数据集对上述定义的LeNet5模型进行训练。训练策略如下表所示,可以调整训练策略并查看训练效果,要求验证精度大于95%。
batch size |
number of epochs |
learning rate |
optimizer |
32 |
3 |
0.01 |
Momentum 0.9 |
代码:
结果及分析:
在三次训练后,精度达到了97.7%,达到了实验要求。
- 实验总结
本实验的主要收获如下:
1.了解了卷积神经网络的基本原理和结构,以及LeNet-5模型的具体设计和实现。
2.掌握了使用MindSpore框架构建和训练卷积神经网络模型的方法和流程。
3.学会了使用MindSpore提供的各种工具和函数进行数据处理,网络搭建,模型训练,评估和测试等操作。
4.学会了使用matplotlib进行结果可视化和分析。
本实验让我对卷积神经网络有了更深入的理解和掌握,我认识到卷积神经网络是一种强大的图像处理工具,它可以提取图像中的特征并进行分类。我也感受到了MindSpore框架的便捷和高效,它为我提供了丰富的模块和函数,让我可以快速地搭建和训练卷积神经网络模型。我觉得这是一次非常有意义和有趣的实验,它激发了我对深度学习的兴趣和热情,也为我打开了一个新的视野。
- 点赞
- 收藏
- 关注作者
评论(0)