diff --git a/docs/zh_cn/api_cn/common_index.rst b/docs/zh_cn/api_cn/common_index.rst new file mode 100644 index 0000000000000000000000000000000000000000..3d6e4221c010f118b5ba2de92771858316b7ef36 --- /dev/null +++ b/docs/zh_cn/api_cn/common_index.rst @@ -0,0 +1,7 @@ +通用方法 Common +====================================== + +.. toctree:: + :maxdepth: 1 + + analysis_api.rst diff --git a/docs/zh_cn/api_cn/distill_index.rst b/docs/zh_cn/api_cn/distill_index.rst new file mode 100644 index 0000000000000000000000000000000000000000..8f5c6639fa60d0f108ee4a36229877c6523a51ac --- /dev/null +++ b/docs/zh_cn/api_cn/distill_index.rst @@ -0,0 +1,9 @@ + +知识蒸馏 Distill +====================================== + +.. toctree:: + :maxdepth: 1 + + single_distiller_api.rst + pantheon_api.md diff --git a/docs/zh_cn/api_cn/index.rst b/docs/zh_cn/api_cn/index.rst index 93d318860566251516182ac34cae7ba1a8684579..e6697a1d94380b5d8432add0711fad5c48a07393 100644 --- a/docs/zh_cn/api_cn/index.rst +++ b/docs/zh_cn/api_cn/index.rst @@ -9,14 +9,8 @@ API文档 .. toctree:: :maxdepth: 1 - analysis_api.rst - nas_api.rst - one_shot_api.rst - darts.rst - pantheon_api.md - prune_api.rst - quantization_api.rst - single_distiller_api.rst - search_space.md - table_latency.md - early_stop.rst + common_index.rst + quant_index.rst + prune_index.rst + distill_index.rst + nas_index.rst diff --git a/docs/zh_cn/api_cn/nas_index.rst b/docs/zh_cn/api_cn/nas_index.rst new file mode 100644 index 0000000000000000000000000000000000000000..a42d781d84772f1ca24acc9e4d83f22976ff9c0a --- /dev/null +++ b/docs/zh_cn/api_cn/nas_index.rst @@ -0,0 +1,13 @@ + +模型搜索 NAS +====================================== + +.. toctree:: + :maxdepth: 1 + + nas_api.rst + search_space.md + table_latency.md + early_stop.rst + one_shot_api.rst + darts.rst diff --git a/docs/zh_cn/api_cn/prune_index.rst b/docs/zh_cn/api_cn/prune_index.rst new file mode 100644 index 0000000000000000000000000000000000000000..ad2c8ffd3cf7784aeb3a3578c63efcb937775254 --- /dev/null +++ b/docs/zh_cn/api_cn/prune_index.rst @@ -0,0 +1,8 @@ + +模型剪裁 Prune +====================================== + +.. toctree:: + :maxdepth: 1 + + prune_api.rst diff --git a/docs/zh_cn/api_cn/quant_index.rst b/docs/zh_cn/api_cn/quant_index.rst new file mode 100644 index 0000000000000000000000000000000000000000..27fa8f298594188457a9c85e514862d7db95b6eb --- /dev/null +++ b/docs/zh_cn/api_cn/quant_index.rst @@ -0,0 +1,8 @@ + +模型量化 Quant +====================================== + +.. toctree:: + :maxdepth: 1 + + quantization_api.rst diff --git a/docs/zh_cn/api_cn/single_distiller_api.rst b/docs/zh_cn/api_cn/single_distiller_api.rst index b3f9b99ad2d30d609f6df41b7f467f601d40ad22..dce99541cbcede508d9953f2f308c664e71bdc56 100644 --- a/docs/zh_cn/api_cn/single_distiller_api.rst +++ b/docs/zh_cn/api_cn/single_distiller_api.rst @@ -1,4 +1,4 @@ -简单蒸馏 +单进程蒸馏 ========= merge @@ -6,9 +6,11 @@ merge .. py:function:: paddleslim.dist.merge(teacher_program, student_program, data_name_map, place, scope=None, name_prefix='teacher_') -`源代码 `_ +`[源代码] `_ -merge将teacher_program融合到student_program中。在融合的program中,可以为其中合适的teacher特征图和student特征图添加蒸馏损失函数,从而达到用teacher模型的暗知识(Dark Knowledge)指导student模型学习的目的。 +将teacher_program融合到student_program中。 + +在融合的program中,可以方便地联合原本两个Program中的Tensor做计算。 **参数:** @@ -16,16 +18,11 @@ merge将teacher_program融合到student_program中。在融合的program中, - **student_program** (Program)-定义了student模型的 `paddle program `_ - **data_name_map** (dict)-teacher输入接口名与student输入接口名的映射,其中dict的 *key* 为teacher的输入名,*value* 为student的输入名 - **place** (fluid.CPUPlace()|fluid.CUDAPlace(N))-该参数表示程序运行在何种设备上,这里的N为GPU对应的ID -- **scope** (Scope)-该参数表示程序使用的变量作用域,如果不指定将使用默认的全局作用域。默认值: None -- **name_prefix** (str)-merge操作将统一为teacher的 `Variables `_ 添加的名称前缀name_prefix。默认值:'teacher_' +- **scope** (Scope)-该参数表示程序使用的变量作用域,如果不指定将使用默认的全局作用域 `global_scope `_ 。默认值: None +- **name_prefix** (str)-为避免同名参数冲突,merge操作将统一为teacher的 `Variables `_ 添加的名称前缀name_prefix。默认值:teacher_ **返回:** 无 -.. note:: - - *data_name_map* 是 **teacher_var name到student_var name的映射** ,如果写反可能无法正确进行merge - - **使用示例:** .. code-block:: python @@ -55,19 +52,23 @@ fsp_loss .. py:function:: paddleslim.dist.fsp_loss(teacher_var1_name, teacher_var2_name, student_var1_name, student_var2_name, program=None) -`源代码 `_ +`[源代码] `_ + +为program内的teacher var和student var添加fsp_loss. -fsp_loss为program内的teacher var和student var添加fsp loss,出自论文 `A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning `_ +fsp_loss出自论文 `A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning `_ **参数:** -- **teacher_var1_name** (str): teacher_var1的名称. 对应的variable是一个形为`[batch_size, x_channel, height, width]`的4-D特征图Tensor,数据类型为float32或float64 -- **teacher_var2_name** (str): teacher_var2的名称. 对应的variable是一个形为`[batch_size, y_channel, height, width]`的4-D特征图Tensor,数据类型为float32或float64。只有y_channel可以与teacher_var1的x_channel不同,其他维度必须与teacher_var1相同 -- **student_var1_name** (str): student_var1的名称. 对应的variable需与teacher_var1尺寸保持一致,是一个形为`[batch_size, x_channel, height, width]`的4-D特征图Tensor,数据类型为float32或float64 -- **student_var2_name** (str): student_var2的名称. 对应的variable需与teacher_var2尺寸保持一致,是一个形为`[batch_size, y_channel, height, width]`的4-D特征图Tensor,数据类型为float32或float64。只有y_channel可以与student_var1的x_channel不同,其他维度必须与student_var1相同 +- **teacher_var1_name** (str): teacher_var1的名称. 对应的variable是一个形为 ``[batch_size, x_channel, height, width]`` 的4-D特征图Tensor,数据类型为float32或float64 +- **teacher_var2_name** (str): teacher_var2的名称. 对应的variable是一个形为 ``[batch_size, y_channel, height, width]`` 的4-D特征图Tensor,数据类型为float32或float64。只有y_channel可以与teacher_var1的x_channel不同,其他维度必须与teacher_var1相同 +- **student_var1_name** (str): student_var1的名称. 对应的variable需与teacher_var1尺寸保持一致,是一个形为 ``[batch_size, x_channel, height, width]`` 的4-D特征图Tensor,数据类型为float32或float64 +- **student_var2_name** (str): student_var2的名称. 对应的variable需与teacher_var2尺寸保持一致,是一个形为 ``[batch_size, y_channel, height, width]`` 的4-D特征图Tensor,数据类型为float32或float64。只有y_channel可以与student_var1的x_channel不同,其他维度必须与student_var1相同 - **program** (Program): 用于蒸馏训练的fluid program, 如果未指定则使用 `fluid.default_main_program() `_ 。默认值:None -**返回:** 由teacher_var1, teacher_var2, student_var1, student_var2组合得到的fsp_loss +**返回:** + +- (Variable): 由teacher_var1, teacher_var2, student_var1, student_var2组合得到的fsp_loss **使用示例:** @@ -93,7 +94,7 @@ fsp_loss为program内的teacher var和student var添加fsp loss,出自论文 ` with fluid.program_guard(student_program): distillation_loss = dist.fsp_loss('teacher_t1.tmp_1', 'teacher_t2.tmp_1', 's1.tmp_1', 's2.tmp_1', student_program) - + l2_loss @@ -101,9 +102,9 @@ l2_loss .. py:function:: paddleslim.dist.l2_loss(teacher_var_name, student_var_name, program=None) -`源代码 `_ +`[源代码] `_ -l2_loss为program内的teacher var和student var添加l2 loss +为program内的teacher var和student var添加l2 loss **参数:** @@ -111,7 +112,9 @@ l2_loss为program内的teacher var和student var添加l2 loss - **student_var_name** (str): student_var的名称. - **program** (Program): 用于蒸馏训练的fluid program。如果未指定则使用 `fluid.default_main_program() `_ 。默认值:None -**返回:** 由teacher_var, student_var组合得到的l2_loss +**返回:** + +- (Variable): 由teacher_var, student_var组合得到的l2_loss **使用示例:** @@ -145,9 +148,11 @@ soft_label_loss .. py:function:: paddleslim.dist.soft_label_loss(teacher_var_name, student_var_name, program=None, teacher_temperature=1., student_temperature=1.) -`源代码 `_ +`[源代码] `_ + +为program内的teacher var和student var添加soft label loss -soft_label_loss为program内的teacher var和student var添加soft label loss,出自论文 `Distilling the Knowledge in a Neural Network `_ +soft_label_loss出自论文 `Distilling the Knowledge in a Neural Network `_ **参数:** @@ -157,11 +162,14 @@ soft_label_loss为program内的teacher var和student var添加soft label loss, - **teacher_temperature** (float): 对teacher_var进行soft操作的温度值,温度值越大得到的特征图越平滑 - **student_temperature** (float): 对student_var进行soft操作的温度值,温度值越大得到的特征图越平滑 -**返回:** 由teacher_var, student_var组合得到的soft_label_loss +**返回:** + +- (Variable): 由teacher_var, student_var组合得到的soft_label_loss **使用示例:** .. code-block:: python + import paddle.fluid as fluid import paddleslim.dist as dist student_program = fluid.Program() @@ -188,19 +196,21 @@ soft_label_loss为program内的teacher var和student var添加soft label loss, loss -------- -.. py:function:: paddleslim.dist.loss(loss_func, program=None, **kwargs) +.. py:function:: paddleslim.dist.loss(loss_func, program=None, **kwargs) -`源代码 `_ +`[源代码] `_ -loss函数支持对任意多对teacher_var和student_var使用自定义损失函数 +支持对teacher_var和student_var使用任意自定义损失函数 **参数:** -- **loss_func**( python function): 自定义的损失函数,输入为teacher var和student var,输出为自定义的loss +- **loss_func** (python function): 自定义的损失函数,输入为teacher var和student var,输出为自定义的loss - **program** (Program): 用于蒸馏训练的fluid program。如果未指定则使用 `fluid.default_main_program() `_ 。默认值:None -- **\**kwargs** : loss_func输入名与对应variable名称 +- **kwargs** : loss_func输入名与对应variable名称 + +**返回:** -**返回** :自定义的损失函数loss +- (Variable): 自定义的损失函数loss **使用示例:**