导语
PaddlePaddle 作为国内首个深度学习开源平台,在 Fluid v1.0版本提供了稳定且向后兼容的 API及英文说明文档。经过不断的优化与迭代,如今已推出了最新的版本Fluid v1.2。1.2版本中除了在基础框架、预测引擎、模型建设、分布式训练各个方向完成了多项更新,还增加API中文文档,使PaddlePaddle API有了完备的中英双语使用指南。
(http://paddlepaddle.org/documentation/docs/zh/1.2/release_note.html )
如果说Fluid v1.0版本标志着PaddlePaddle走向了成熟,如今的Fluid则是在成熟的基础上不断突破自己,在前进的道路上保持设计初心,努力为开发者打造真正易学易用、简洁优雅、快速高效的深度学习框架。
了解API的用法是学习一款深度学习框架的关键,本篇文章梳理了目前Fluid API的主要类别与使用场景,并提供了如何从官方文档中挖掘更多学习资料的小技巧,相信可以帮助您更好地使用Fluid。
Fluid API
Fluid API的设计既保持了框架的灵活性,方便您实现功能的任意组合;又提供了常用功能的封装模块,满足您一键调用的需求。无论您对深度学习的掌握程度如何,均可在Fluid中找到适合自己的模式。
Fluid涵盖了搭建深度学习网络所需的大量基本模块,您可以通过阅读API说明文档去深入了解它们。
(http://www.paddlepaddle.org/documentation/docs/zh/1.2/api_cn/index_cn.html )
总的来说,Fluid API被分为以下几类,它们分别负责不同的功能:
Fluid | 包含定义框架的基本单元 |
Fluid.average | 提供计算加权平均值的方法 |
Fluid.backward | 提供根据网络的前向部分生成反向部分的方法 |
Fluid.clip | 提供多种张量剪切的方法 |
Fluid.data_feeder | 提供将训练数据喂入执行器中进行训练的方法 |
Fluid.executor | 提供接受定义的网络并执行训练的方法 |
Fluid.initializer | 提供了常用的初始化方法 |
Fluid.io | 提供了加载/存储网络和参数的方法 |
Fluid.layers | 包含了配置网络所需的丰富API |
Fluid.metrics | 提供多种网络评价指标 |
Fluid.nets | 提供了搭建复杂网络时所需的基本模块 |
Fluid.optimizer | 提供多种优化方法 |
Fluid.profiler | 提供了网络分析器接口用于debug程序 |
Fluid.regularizer | 提供常用的正则化方法 |
Fluid.transpiler | 提供分布式计算时所需的网络转义方法 |
其中 Fluid.layers是最常用也最多样的,它涵盖了模型配置的各个阶段:
control_flow : Fluid中的“控制流”概念可以类比与程序语言,用于控制深度学习模型在训练或者预测过程中的执行逻辑。control_flow中包含了多种控制流API供用户选择。
io : 定义了网络中数据输入输出的方法。
nn : 定义了神经网络的各种层,fc层、卷积层、池化层,以及网络搭建中所需其他单元如激活函数、损失函数等等。
ops : 提供了丰富的数学操作符,同时支持一元和二元操作。
tensor : 提供了针对Tensor和LoDTensor的相关操作。
learning_rate_schedule : 提供诸如指数衰减、分段衰减、多项式衰减等多种学习率调节器。
detection : 提供图像检测中特有的相关操作。
metric_op : 提供常见的训练效果评价指标。
API 文档
Fluid 不仅在API的设计上追求极致,在配套API文档中也下足功夫。在最新的v1.2版本中,增加了中文版API文档,成为首家官方完整提供中文文档的深度学习框架。
下面几点小技巧将帮助您充分利用官方文档,快速掌握API使用秘籍
阅读API使用指南
(http://www.paddlepaddle.org/documentation/docs/zh/1.2/api_cn/api_guides/index.html )
为方便用户快速定位所需API,减少用户查找API的时间。官方提供了中文版 API使用指南(也称API Guide),介绍各类API将应用于何种场景,以及如何选择需要的API。
API使用指南位于官网说明文档的API板块,分功能介绍了Fluid的API体系和用法,帮助您快速了解Fluid API的全貌,主要包括以下几个模块:
神经网络层 | 将fluid.layers中的API按功能更加细致的分为:卷积、池化、图像检测、序列、数学操作、激活函数、损失函数、数据输入输出、控制流、稀疏更新、学习率调整器和张量这几大类,并分别介绍如何在实际任务中使用它们 |
执行引擎 | 介绍了Fluid的单线程任务中如何顺序执行定义的Operator |
优化器 | 简要介绍了Fluid中不同优化器的工作原理与相关论文 |
评价指标 | 分别介绍了分类任务、序列标注任务和生成任务的评价指标 |
模型保存与加载 | 介绍了如何使用Fluid API对模型、变量和参数进行保存和加载 |
预测引擎 | 介绍了如何对预测模型进行保存与加载 |
分布式训练 | 分别从分布式同步训练、分布式异步训练、分布式CPU训练最佳实践、大规模稀疏特征模型训练和分布式训练reader准备几方面,为您介绍在分布式场景下您需要掌握的API |
显存优化 | 指导您如何通过调用 memory_optimize接口进行显存优化 |
复杂网络 | 介绍了如何利用细粒度的函数根据一定的拼接逻辑得到Fluid中封装好的复杂模块 |
数据并行执行引擎 | 介绍了如何以数据并行的方式在多节点上分别执行Program |
当您希望实现某一功能时,强烈推荐您阅读API使用指南,它不仅能够帮助您快速找到所需文档,也可以方便您高效了解各类API的用法。
查阅API说明文档
满足大量国内开发者的需求,从Fluid v1.2起,官网增加了配套的中文版API说明文档,它与英文版文档对齐,并将被持续维护。这标志着PaddlePaddle成为首家官方完整支持中文文档的深度学习框架。
为了让中文文档尽快与大家见面,我们在翻译的过程中可能存在一些不够完善的地方,希望大家可以在阅读的同时帮助我们共同校验文档的翻译质量。
非常欢迎您为PaddlePaddle贡献文档,我们的文档在PaddlePaddle/FluidDoc (https://github.com/PaddlePaddle/FluidDoc) 中统一管理,如您对PaddlePaddle有任何问题,也非常欢迎您在此Repo提交Issue,您的反馈是我们进步的动力!