You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mindspore/model_zoo/official/cv/lenet/README_CN.md

6.2 KiB

目录

LeNet描述

LeNet是1998年提出的一种典型的卷积神经网络。它被用于数字识别并取得了巨大的成功。

论文 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中处理。
  • 目录结构如下:

└─Data
    ├─test
    │      t10k-images.idx3-ubyte
    │      t10k-labels.idx1-ubyte
    │
    └─train
           train-images.idx3-ubyte
           train-labels.idx1-ubyte

环境要求

快速入门

通过官方网站安装MindSpore后您可以按照如下步骤进行训练和评估

# 进入脚本目录训练LeNet
sh run_standalone_train_ascend.sh [DATA_PATH] [CKPT_SAVE_PATH]  
# 进入脚本目录评估LeNet
sh run_standalone_eval_ascend.sh [DATA_PATH] [CKPT_NAME]

脚本说明

脚本及样例代码

├── 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               //  评估脚本  

脚本参数

train.py和config.py中主要参数如下

--data_path: 到训练和评估数据集的绝对全路径
--epoch_size: 训练轮次数
--batch_size: 训练批次大小  
--image_height: 输入到模型的图像高度
--image_width: 输入到模型的图像宽度
--device_target: 代码实施的设备可选值为"Ascend""GPU""CPU"
--checkpoint_path: 训练后保存的检查点文件的绝对全路径
--data_path: 数据集所在路径

训练过程

训练

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

训练结束,损失值如下:

# 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
...

模型检查点保存在当前目录下。

评估过程

评估

在运行以下命令之前,请检查用于评估的检查点路径。

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文件查看结果。测试数据集的准确性如下

# grep "Accuracy:" log.txt
'Accuracy':0.9842

模型描述

性能

评估性能

参数 LeNet
资源 Ascend 910; CPU2.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脚本

随机情况说明

在dataset.py中我们设置了“create_dataset”函数内的种子。

ModelZoo主页

请浏览官网主页