# 目录 - [目录](#目录) - [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非常简单,包含5层,由2个卷积层和3个全连接层组成。 ## 数据集 使用的数据集:[MNIST]() - 数据集大小:52.4M,共10个类,6万张 28*28图像 - 训练集:6万张图像 - 测试集:5万张图像 - 数据格式:二进制文件 - 注:数据在dataset.py中处理。 - 目录结构如下: ```bash └─Data ├─test │ t10k-images.idx3-ubyte │ t10k-labels.idx1-ubyte │ └─train train-images.idx3-ubyte train-labels.idx1-ubyte ``` ## 环境要求 - 硬件(Ascend/GPU/CPU) - 使用Ascend、GPU或CPU处理器来搭建硬件环境。 - 框架 - [MindSpore](https://www.mindspore.cn/install/en) - 如需查看详情,请参见如下资源: - [MindSpore教程](https://www.mindspore.cn/tutorial/training/zh-CN/master/index.html) - [MindSpore Python API](https://www.mindspore.cn/doc/api_python/zh-CN/master/index.html) ## 快速入门 通过官方网站安装MindSpore后,您可以按照如下步骤进行训练和评估: ```python # 进入脚本目录,训练LeNet sh run_standalone_train_ascend.sh [DATA_PATH] [CKPT_SAVE_PATH] # 进入脚本目录,评估LeNet sh run_standalone_eval_ascend.sh [DATA_PATH] [CKPT_NAME] ``` ## 脚本说明 ### 脚本及样例代码 ```bash ├── cv ├── lenet ├── README.md // Lenet描述 ├── requirements.txt // 需要的包 ├── scripts │ ├──run_standalone_train_cpu.sh // CPU训练 │ ├──run_standalone_train_gpu.sh // GPU训练 │ ├──run_standalone_train_ascend.sh // Ascend训练 │ ├──run_standalone_eval_cpu.sh // CPU评估 │ ├──run_standalone_eval_gpu.sh // GPU评估 │ ├──run_standalone_eval_ascend.sh // Ascend评估 ├── src │ ├──dataset.py // 创建数据集 │ ├──lenet.py // Lenet架构 │ ├──config.py // 参数配置 ├── train.py // 训练脚本 ├── eval.py // 评估脚本 ``` ## 脚本参数 ```python train.py和config.py中主要参数如下: --data_path: 到训练和评估数据集的绝对全路径 --epoch_size: 训练轮次数 --batch_size: 训练批次大小 --image_height: 输入到模型的图像高度 --image_width: 输入到模型的图像宽度 --device_target: 代码实施的设备可选值为"Ascend"、"GPU"、"CPU" --checkpoint_path: 训练后保存的检查点文件的绝对全路径 --data_path: 数据集所在路径 ``` ## 训练过程 ### 训练 ```bash python train.py --data_path Data --ckpt_path ckpt > log.txt 2>&1 & # or enter script dir, and run the script sh run_standalone_train_ascend.sh Data ckpt ``` 训练结束,损失值如下: ```bash # grep "loss is " log.txt epoch:1 step:1, loss is 2.2791853 ... epoch:1 step:1536, loss is 1.9366643 epoch:1 step:1537, loss is 1.6983616 epoch:1 step:1538, loss is 1.0221305 ... ``` 模型检查点保存在当前目录下。 ## 评估过程 ### 评估 在运行以下命令之前,请检查用于评估的检查点路径。 ```bash python eval.py --data_path Data --ckpt_path ckpt/checkpoint_lenet-1_1875.ckpt > log.txt 2>&1 & # or enter script dir, and run the script sh run_standalone_eval_ascend.sh Data ckpt/checkpoint_lenet-1_1875.ckpt ``` 您可以通过log.txt文件查看结果。测试数据集的准确性如下: ```bash # 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=1875, batch_size = 32, lr=0.01 | | 优化器 | Momentum | | 损失函数 | Softmax交叉熵 | | 输出 | 概率 | | 损失 | 0.002 | | 速度 | 1.70毫秒/步 | | 总时长 | 43.1秒 | | | 微调检查点 | 482k (.ckpt文件) | | 脚本 | [LeNet脚本](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)。