# 目录 - [目录](#目录) - [LeNet描述](#lenet描述) - [模型架构](#模型架构) - [数据集](#数据集) - [环境要求](#环境要求) - [快速入门](#快速入门) - [脚本说明](#脚本说明) - [脚本及样例代码](#脚本及样例代码) - [脚本参数](#脚本参数) - [训练过程](#训练过程) - [训练](#训练) - [评估过程](#评估过程) - [评估](#评估) - [模型描述](#模型描述) - [性能](#性能) - [评估性能](#评估性能) - [随机情况说明](#随机情况说明) - [ModelZoo主页](#modelzoo主页) # LeNet描述 LeNet是1998年提出的一种典型的卷积神经网络。它被用于数字识别并取得了巨大的成功。 [论文](https://ieeexplore.ieee.org/document/726791): Y.Lecun, L.Bottou, Y.Bengio, P.Haffner.Gradient-Based Learning Applied to Document Recognition.*Proceedings of the IEEE*.1998. 这是LeNet的量化网络。 # 模型架构 LeNet非常简单,包含5层,由2个卷积层和3个全连接层组成。 # 数据集 使用的数据集:[MNIST]() - 数据集大小:52.4M,共10个类,6万张 28*28图像 - 训练集:6万张图像 - 测试集:1万张图像 - 数据格式:二进制文件 - 注:数据在dataset.py中处理。 - 目录结构如下: ``` └─Data ├─test │ t10k-images.idx3-ubyte │ t10k-labels.idx1-ubyte │ └─train train-images.idx3-ubyte train-labels.idx1-ubyte ``` # 环境要求 - 硬件:Ascend - 使用Ascend搭建硬件环境 - 框架 - [MindSpore](https://www.mindspore.cn/install/en) - 如需查看详情,请参见如下资源: - [MindSpore教程](https://www.mindspore.cn/tutorial/training/en/master/index.html) - [MindSpore Python API](https://www.mindspore.cn/doc/api_python/en/master/index.html) # 快速入门 通过官方网站安装MindSpore后,您可以按照如下步骤进行训练和评估: ```python # 进入../lenet目录,训练lenet网络,生成'.ckpt'文件。 sh run_standalone_train_ascend.sh [DATA_PATH] # 进入lenet目录,训练LeNet-Quant python train.py --device_target=Ascend --data_path=[DATA_PATH] --ckpt_path=[CKPT_PATH] --dataset_sink_mode=True # 评估LeNet-Quant python eval.py --device_target=Ascend --data_path=[DATA_PATH] --ckpt_path=[CKPT_PATH] --dataset_sink_mode=True ``` # 脚本说明 ## 脚本及样例代码 ``` ├── model_zoo ├── README.md // 所有型号的描述 ├── lenet_quant ├── README.md // LeNet-Quant描述 ├──src │ ├── config.py // 参数配置 │ ├── dataset.py // 创建数据集 │ ├── lenet_fusion.py // 自动构建LeNet-Quant的定量网络模型 │ ├── lenet_quant.py // 手动构建的LeNet-Quant定量网络模型 │ ├── loss_monitor.py // 监控网络损失和其他数据 ├── requirements.txt // 需要的包 ├── train.py // 使用Ascend训练LeNet-Quant网络 ├── eval.py // 使用Ascend评估LeNet-Quant网络d ``` ## 脚本参数 ```python train.py和config.py中主要参数如下: --data_path:到训练和评估数据集的绝对全路径 --epoch_size:训练轮次数 --batch_size:训练批次大小 --image_height:输入到模型的图像高度 --image_width:输入到模型的图像宽度 --device_target:代码实施的设备可选值为"Ascend","GPU", "CPU",目前只支持"Ascend" --ckpt_path:训练后保存的检查点文件的绝对全路径 --data_path:数据集所在路径 ``` ## 训练过程 ### 训练 ``` python train.py --device_target=Ascend --dataset_path=/home/datasets/MNIST --dataset_sink_mode=True > log.txt 2>&1 & ``` 训练结束,损失值如下: ``` # grep "Epoch " log.txt Epoch:[ 1/ 10], step:[ 937/ 937], loss:[0.0081], avg loss:[0.0081], time:[11268.6832ms] Epoch time:11269.352, per step time:12.027, avg loss:0.008 Epoch:[ 2/ 10], step:[ 937/ 937], loss:[0.0496], avg loss:[0.0496], time:[3085.2389ms] Epoch time:3085.641, per step time:3.293, avg loss:0.050 Epoch:[ 3/ 10], step:[ 937/ 937], loss:[0.0017], avg loss:[0.0017], time:[3085.3510ms] ... ... ``` 模型检查点保存在当前目录下。 ## 评估过程 ### 评估 在运行以下命令之前,请检查用于评估的检查点路径。 ``` python eval.py --data_path Data --ckpt_path ckpt/checkpoint_lenet-1_937.ckpt > log.txt 2>&1 & ``` 您可以通过log.txt文件查看结果。测试数据集的准确性如下: ``` # grep "Accuracy:" log.txt 'Accuracy':0.9842 ``` # 模型描述 ## 性能 ### 评估性能 | 参数 | LeNet | | -------------------------- | ----------------------------------------------------------- | | 资源 | Ascend 910 CPU:2.60GHz,192核,内存:755G | | 上传日期 | 2020-06-09 | | MindSpore版本 | 0.5.0-beta | | 数据集 | MNIST | | 训练参数 | epoch=10, steps=937, batch_size = 64, lr=0.01 | | 优化器 | Momentum | | 损失函数 | Softmax交叉熵 | | 输出 | 概率 | | 损失 | 0.002 | | 速度 |3.29毫秒/步 | | 总时长 | 40秒 | | 微调检查点 | 482k (.ckpt文件) | | 脚本 | [脚本](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet) | # 随机情况说明 在dataset.py中,我们设置了“create_dataset”函数内的种子。 # ModelZoo主页 请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。