You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

README_CN.md 6.3 kB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. # 目录
  2. <!-- TOC -->
  3. - [目录](#目录)
  4. - [LeNet描述](#lenet描述)
  5. - [模型架构](#模型架构)
  6. - [数据集](#数据集)
  7. - [环境要求](#环境要求)
  8. - [快速入门](#快速入门)
  9. - [脚本说明](#脚本说明)
  10. - [脚本及样例代码](#脚本及样例代码)
  11. - [脚本参数](#脚本参数)
  12. - [训练过程](#训练过程)
  13. - [训练](#训练)
  14. - [评估过程](#评估过程)
  15. - [评估](#评估)
  16. - [模型描述](#模型描述)
  17. - [性能](#性能)
  18. - [评估性能](#评估性能)
  19. - [随机情况说明](#随机情况说明)
  20. - [ModelZoo主页](#modelzoo主页)
  21. <!-- /TOC -->
  22. # LeNet描述
  23. LeNet是1998年提出的一种典型的卷积神经网络。它被用于数字识别并取得了巨大的成功。
  24. [论文](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.
  25. # 模型架构
  26. LeNet非常简单,包含5层,由2个卷积层和3个全连接层组成。
  27. # 数据集
  28. 使用的数据集:[MNIST](<http://yann.lecun.com/exdb/mnist/>)
  29. - 数据集大小:52.4M,共10个类,6万张 28*28图像
  30. - 训练集:6万张图像
  31. - 测试集:5万张图像
  32. - 数据格式:二进制文件
  33. - 注:数据在dataset.py中处理。
  34. - 目录结构如下:
  35. ```
  36. └─Data
  37. ├─test
  38. │ t10k-images.idx3-ubyte
  39. │ t10k-labels.idx1-ubyte
  40. └─train
  41. train-images.idx3-ubyte
  42. train-labels.idx1-ubyte
  43. ```
  44. # 环境要求
  45. - 硬件(Ascend/GPU/CPU)
  46. - 使用Ascend、GPU或CPU处理器来搭建硬件环境。
  47. - 框架
  48. - [MindSpore](https://www.mindspore.cn/install/en)
  49. - 如需查看详情,请参见如下资源:
  50. - [MindSpore教程](https://www.mindspore.cn/tutorial/training/zh-CN/master/index.html)
  51. - [MindSpore Python API](https://www.mindspore.cn/doc/api_python/zh-CN/master/index.html)
  52. # 快速入门
  53. 通过官方网站安装MindSpore后,您可以按照如下步骤进行训练和评估:
  54. ```python
  55. # 进入脚本目录,训练LeNet
  56. sh run_standalone_train_ascend.sh [DATA_PATH] [CKPT_SAVE_PATH]
  57. # 进入脚本目录,评估LeNet
  58. sh run_standalone_eval_ascend.sh [DATA_PATH] [CKPT_NAME]
  59. ```
  60. # 脚本说明
  61. ## 脚本及样例代码
  62. ```
  63. ├── cv
  64. ├── lenet
  65. ├── README.md // Lenet描述
  66. ├── requirements.txt // 需要的包
  67. ├── scripts
  68. │ ├──run_standalone_train_cpu.sh // CPU训练
  69. │ ├──run_standalone_train_gpu.sh // GPU训练
  70. │ ├──run_standalone_train_ascend.sh // Ascend训练
  71. │ ├──run_standalone_eval_cpu.sh // CPU评估
  72. │ ├──run_standalone_eval_gpu.sh // GPU评估
  73. │ ├──run_standalone_eval_ascend.sh // Ascend评估
  74. ├── src
  75. │ ├──dataset.py // 创建数据集
  76. │ ├──lenet.py // Lenet架构
  77. │ ├──config.py // 参数配置
  78. ├── train.py // 训练脚本
  79. ├── eval.py // 评估脚本
  80. ```
  81. ## 脚本参数
  82. ```python
  83. train.py和config.py中主要参数如下:
  84. --data_path: 到训练和评估数据集的绝对全路径
  85. --epoch_size: 训练轮次数
  86. --batch_size: 训练批次大小
  87. --image_height: 输入到模型的图像高度
  88. --image_width: 输入到模型的图像宽度
  89. --device_target: 代码实施的设备可选值为"Ascend"、"GPU"、"CPU"
  90. --checkpoint_path: 训练后保存的检查点文件的绝对全路径
  91. --data_path: 数据集所在路径
  92. ```
  93. ## 训练过程
  94. ### 训练
  95. ```
  96. python train.py --data_path Data --ckpt_path ckpt > log.txt 2>&1 &
  97. # or enter script dir, and run the script
  98. sh run_standalone_train_ascend.sh Data ckpt
  99. ```
  100. 训练结束,损失值如下:
  101. ```
  102. # grep "loss is " log.txt
  103. epoch:1 step:1, loss is 2.2791853
  104. ...
  105. epoch:1 step:1536, loss is 1.9366643
  106. epoch:1 step:1537, loss is 1.6983616
  107. epoch:1 step:1538, loss is 1.0221305
  108. ...
  109. ```
  110. 模型检查点保存在当前目录下。
  111. ## 评估过程
  112. ### 评估
  113. 在运行以下命令之前,请检查用于评估的检查点路径。
  114. ```
  115. python eval.py --data_path Data --ckpt_path ckpt/checkpoint_lenet-1_1875.ckpt > log.txt 2>&1 &
  116. # or enter script dir, and run the script
  117. sh run_standalone_eval_ascend.sh Data ckpt/checkpoint_lenet-1_1875.ckpt
  118. ```
  119. 您可以通过log.txt文件查看结果。测试数据集的准确性如下:
  120. ```
  121. # grep "Accuracy:" log.txt
  122. 'Accuracy':0.9842
  123. ```
  124. # 模型描述
  125. ## 性能
  126. ### 评估性能
  127. | 参数 | LeNet |
  128. | -------------------------- | ----------------------------------------------------------- |
  129. | 资源 | Ascend 910; CPU:2.60GHz,192核;内存:755G |
  130. | 上传日期 | 2020-06-09 |
  131. | MindSpore版本 | 0.5.0-beta |
  132. | 数据集 | MNIST |
  133. | 训练参数 | epoch=10, steps=1875, batch_size = 32, lr=0.01 |
  134. | 优化器 | Momentum |
  135. | 损失函数 | Softmax交叉熵 |
  136. | 输出 | 概率 |
  137. | 损失 | 0.002 |
  138. | 速度 | 1.70毫秒/步 |
  139. | 总时长 | 43.1秒 | |
  140. | 微调检查点 | 482k (.ckpt文件) |
  141. | 脚本 | https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet |
  142. # 随机情况说明
  143. 在dataset.py中,我们设置了“create_dataset”函数内的种子。
  144. # ModelZoo主页
  145. 请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。