首个完整支持中文文档的深度学习框架——百度PaddlePaddle API文档简介

导语

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,您的反馈是我们进步的动力!

PaddlePaddle
PaddlePaddle

PaddlePaddle是百度独立研发的深度学习平台,易用,高效,灵活可伸缩,可支持海量图像识别分类、机器翻译和自动驾驶等多个领域业务需求,现已全面开源。

产业神经网络API深度学习
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

分布式计算技术技术

在计算机科学中,分布式计算,又译为分散式運算。这个研究领域,主要研究分布式系统如何进行计算。分布式系统是一组电脑,通过网络相互链接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~