From 9dd37bfe3772d450c0f3f9c739238fc45f06ea12 Mon Sep 17 00:00:00 2001 From: ceci3 <592712189@qq.com> Date: Fri, 12 Jun 2020 12:03:40 +0000 Subject: [PATCH] update --- docs/zh_cn/quick_start/nas_tutorial_example.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/zh_cn/quick_start/nas_tutorial_example.md b/docs/zh_cn/quick_start/nas_tutorial_example.md index be9230bb..ac97a1bb 100644 --- a/docs/zh_cn/quick_start/nas_tutorial_example.md +++ b/docs/zh_cn/quick_start/nas_tutorial_example.md @@ -1,6 +1,9 @@ # 图像分类网络结构搜索-快速开始 -该教程以图像分类模型MobileNetV2为例,说明如何在cifar10数据集上快速使用[网络结构搜索接口](../api/nas_api.md)。 +该教程以图像分类模型MobileNetV2为例,说明如何在CIFAR10数据集上快速使用[网络结构搜索接口](../api/nas_api.md)基于模拟退火(Simulated Annealing,简称SA)的方式进行网络结构搜索。 + +模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。详细算法可以参考[模拟退火](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/docs/zh_cn/algo/algo.md#411-%E6%A8%A1%E6%8B%9F%E9%80%80%E7%81%AB) + Tips: 运行该示例前请确认已正确安装Paddle和PaddleSlim。 该示例包含以下步骤: @@ -15,8 +18,7 @@ Tips: 运行该示例前请确认已正确安装Paddle和PaddleSlim。 以下章节依次介绍每个步骤的内容。 # 1. 加载示例数据 -NEED to add more description -使用的示例数据集为cifar10,paddle框架中`paddle.dataset.cifar`包括了cifar数据集的下载和读取,代码如下: +使用的示例数据集为CIFAR10,CIFAR10数据集共有60000张彩色图片,图像大小是32\*32,分为10个类,每类6000张图片。训练集包含50000张图片,共有10个类别,每类从6000张>图片中随机选取5000张图片,剩下的图片组成测试集,测试集包含10000张图片。paddle框架中`paddle.dataset.cifar`包括了cifar数据集的下载和读取,代码如下: ```python import paddle import paddle.fluid as fluid @@ -29,9 +31,9 @@ eval_feeder = fluid.DataFeeder(inputs, fluid.CPUPlace()) # 2. 构建模型 -NEED to add more description +本示例是基于MobileNetV2搜索空间进行网络结构搜索的,MobileNetV2是一个基于inverted residual的轻量级网络,详细信息可以查看[MobileNetV2: Inverted Residuals and Linear Bottlenecks](https://arxiv.org/abs/1801.04381) ```python -### 初始化SANAS实例 +### 初始化SANAS实例,指定搜索空间为MobileNetV2。 sanas = slim.nas.SANAS(configs=[('MobileNetV2Space')], server_addr=("", 8337), save_checkpoint=None) ### 获取当前搜索到的模型结构 archs = sanas.next_archs()[0] @@ -62,7 +64,7 @@ with fluid.program_guard(train_program, startup_program): ``` # 3. 开始训练当前网络结构 -NEED to add more description +根据上面一步拿到的模型结构构造的训练program开始训练。 ```python outputs = [avg_cost.name, acc_top1.name, acc_top5.name] for data in train_reader(): @@ -71,7 +73,7 @@ for data in train_reader(): ``` # 4. 开始评估当前网络结构 -NEED to add more description +评估第3步中训练的模型结构。 ```python reward = [] for data in eval_reader(): @@ -84,7 +86,7 @@ print("FINAL TEST: avg_cost: {}, acc1: {}, acc5: {}".format(finally_reward[0], f ``` # 5. 回传当前网络结构的得分 -NEED to add more description +在当前模型结构训练和评估完成后回传最终的评估结果,SANAS会根据这个结果更新下一轮的模型结构。 ```python sanas.reward(float(finally_reward[1])) ``` -- GitLab