您的方位:主页>>电脑软件

怎样用Paddle Fluid API建立一个简略的神经网络?这里有一份编程攻略

发布时刻:2019-05-27 17:26:37  来历:互联网    采编:王涵  布景:

  PaddlePaddle 是百度自主研制,集深度学习中心结构、东西组件和服务途径为一体的开源深度学习途径。该途径技能抢先、功用齐备。Paddle Fluid 是 PaddlePaddle 的中心结构,满意模型开发、练习、布置的全流程需求。本文将展现怎样用 Paddle Fluid API 编程并建立一个简略的神经网络。

  那么,Paddle Fluid 有哪些中心概念?如安在 Paddle Fluid 中界说运算进程?怎样运用executor 运转 Paddle Fluid 操作?怎样从逻辑层对实际问题建模?怎样调用 API(层,数据集,丢失函数,优化办法等等)呢?

  一、 运用 Tensor 表明数据

  Paddle Fluid 和其它干流结构相同,运用 Tensor 数据结构来承载数据。Tensor 能够简略了解成一个多维数组,一般来说能够有恣意多的维度。不同的 Tensor 能够具有自己的数据类型和形状,同一 Tensor 中每个元素的数据类型是相同的,Tensor 的形状便是 Tensor 的维度。

  下图直观地表明 1~6 维的 Tensor:

  在 Paddle Fluid 中存在三种特别的 Tensor:

  1. 模型中的可学习参数 模型中的可学习参数(包含网络权重、偏置等)生存期和整个练习任务相同长,会承受优化算法的更新,在 Paddle Fluid 中以 Variable 的子类 Parameter 表明。

  在 Paddle Fluid 中能够经过 fluid.layers.create_parameter 来创立可学习参数:

  一般状况下,您不需求自己来创立网络中的可学习参数,Paddle Fluid 为大部分常见的神经网络根本核算模块都供给了封装。以最简略的全衔接模型为例,下面的代码片段会直接为全衔接层创立衔接权值(W)和偏置(bias)两个可学习参数,无需显式地调用 Parameter 相关接口来创立。

  2.输入输出 Tensor :整个神经网络的输入数据也是一个特别的 Tensor,在这个 Tensor 中,一些维度的巨细在界说模型时无法确认(一般包含:batch size,假如 mini-batch 之间数据可变,也会包含图片的宽度和高度等),在界说模型时需求占位。

  Paddle Fluid 中运用 fluid.layers.data 来接纳输入数据,fluid.layers.data 需求供给输入 Tensor 的形状信息,当遇到无法确认的维度时,相应维度指定为 None 或 -1,如下面的代码片段所示:

  其间,dtype="int64" 表明有符号 64 位整数数据类型,更多 Paddle Fluid 现在支撑的数据类型请在官网查阅:http://paddlepaddle.org/documentation/docs/zh/1.4/user_guides/howto/prepare_data/feeding_data.html#fluid。

  3.常量 Tensor Paddle Fluid 经过 fluid.layers.fill_constant 来完结常量 Tensor,用户能够指定 Tensor 的形状,数据类型和常量值。代码完结如下所示:

  需求留意的是,上述界说的 tensor 并不具有值,它们仅表明即将履行的操作,如您直接打印 data 将会得到描绘该 data 的一段信息:

  输出成果:

  具体输出数值将在 Executor 运转时得到,具体进程会在后文打开描绘。

  数据传入

  Paddle Fluid 有特定的数据传入方法:

  您需求运用 fluid.layers.data 装备数据输入层,并在 fluid.Executor 或 fluid.ParallelExecutor 中,运用 executor.run(feed=...) 传入练习数据。

  具体的数据预备进程,您能够阅览官网运用攻略「预备数据」章节。

  运用 Operator 表明对数据的操作

  在 Paddle Fluid 中,一切对数据的操作都由 Operator 表明,您能够运用内置指令来描绘它们的神经网络。为了便于用户运用,在 Python 端,Paddle Fluid 中的 Operator 被一步封装入 paddle.fluid.layers,paddle.fluid.nets 等模块。这是由于一些常见的对 Tensor 的操作可能是由更多根底操作构成,为了进步运用的便利性,结构内部对根底 Operator 进行了一些封装,包含创立 Operator 依靠可学习参数,可学习参数的初始化细节等,削减用户重复开发的本钱。例如用户能够运用 paddle.fluid.layers.elementwise_add() 完结两个输入 Tensor 的加法运算:

  输出成果:

  本次运转时,输入 a=7,b=3,得到 outs=10。

  您能够仿制这段代码在本地履行,根据指示输入其它数值调查核算成果。

  假如想获取网络履行进程中的 a,b 的具体值,能够将期望查看的变量增加在 fetch_list 中。

  输出成果:

  运用 Program 描绘神经网络模型

  Paddle Fluid 不同于其它大部分深度学习结构,去掉了静态核算图的概念,代之以 Program 的方法动态描绘核算进程。这种动态的核算描绘方法兼具网络结构修正的灵活性和模型建立的快捷性,在确保功用的一起极大地进步了结构对模型的表达能力。

  开发者的一切 Operator 都将写入 Program,在 Paddle Fluid 内部将主动转化为一种叫作 ProgramDesc 的描绘言语,Program 的界说进程就像在写一段通用程序,有开发经历的用户在运用 Paddle Fluid 时,会很天然的将自己的常识搬迁过来。

  其间,Paddle Fluid 经过供给次序、分支和循环三种履行结构的支撑,让用户能够经过组合描绘恣意杂乱的模型。

  次序履行:

  用户能够运用次序履行的方法建立网络:

  条件分支——switch、if else:

  Paddle Fluid 中有 switch 和 if-else 类来完结条件挑选,用户能够运用这一履行结构在学习率调节器中调整学习率或其它期望的操作:

  关于 Paddle Fluid 中 Program 的具体规划思维,能够参阅阅览官网进阶运用「规划思维」中更多 Fluid 中的控制流,能够参阅阅览 API 文档。

  运用 Executor 履行 Program

  Paddle Fluid 的规划思维类似于高档编程言语 C++和 JAVA 等。程序的履行进程被分为编译和履行两个阶段。用户完结对 Program 的界说后,Executor 承受这段 Program 并转化为 C++后端实在可履行的 FluidProgram,这一主动完结的进程叫做编译。编译往后需求 Executor 来履行这段编译好的 FluidProgram。例如上文完结的加法运算,当构建好 Program 后,需求创立 Executor,进行初始化 Program 和练习 Program:

  代码实例

  您现已对 Paddle Fluid 中心概念有了开端知道了,无妨测验装备一个简略的网络吧。假如感兴趣的话能够跟从本部分,完结一个十分简略的数据猜测。

  从逻辑层面清晰了输入数据格式、模型结构、丢失函数以及优化算法后,需求运用 Paddle Fluid 供给的 API 及算子来完结模型逻辑。一个典型的模型首要包含 4 个部分,分别是:输入数据格式界说,模型前向核算逻辑,丢失函数以及优化算法。

  1、问题描绘 : 给定一组数据 <x,y>,求解出函数 f,使得 y=f(x),其间 X,Y 均为一维张量。终究网络能够根据输入 x,精确猜测出 y_predict。

  2、界说数据 : 假定输入数据 X=[1 2 3 4],Y=[2,4,6,8],在网络中界说:

  3、建立网络(界说前向核算逻辑) : 接下来需求界说猜测值与输入的联络,本次运用一个简略的线性回归函数进行猜测:

  这样的网络就能够进行猜测了,尽管输出成果仅仅一组随机数,离预期成果仍相差甚远:

  输出成果:

  4、增加丢失函数 : 完结模型建立后,怎样评价猜测成果的好坏呢?咱们一般在规划的网络中增加丢失函数,以核算实在值与猜测值的差。在本例中,丢失函数选用均方差函数:

  

  输出一轮核算后的猜测值和丢失函数:

  输出成果:

  能够看到第一轮核算后的丢失函数为 9.0,仍有很大的下降空间。

  5、网络优化 确认丢失函数后,能够经过前向核算得到丢失值,然后经过链式求导规律得到参数的梯度值。获取梯度值后需求更新参数,最简略的算法是随机梯度下降法:w=w−η⋅g,由 fluid.optimizer.SGD 完结:

  让咱们的网络练习 100 次,查看成果:

  输出成果:

  能够看到 100 次迭代后,猜测值现已十分挨近实在值了,丢失值也从初始值 9.05 下降到了 0.01。至此,祝贺您!现已成功运用 PaddlePaddle 中心结构 Paddle Fluid 建立了一个简略网络。假如您还想测验更多,能够从官网持续阅览相关的文档及更多丰厚的模型实例。

  参阅:

  PaddlePaddle 项目地址:https://github.com/PaddlePaddle

  PaddlePaddle 官网运用攻略地址:http://paddlepaddle.org/documentation/docs/zh/1.4/user_guides/index_cn.html




重视fun88科技资讯大众号(fun88365 ),每天推送你感兴趣的科技内容。

特别提示:本网内容转载自其他媒体,意图在于传递更多信息,并不代表本网附和其观念。其原创性以及文中陈说文字和内容未经本站证明,对本文以及其间悉数或许部分内容、文字的实在性、完整性、及时性本站不作任何确保或许诺,并请自行核实相关内容。本站不承当此类著作侵权行为的直接职责及连带职责。如若本网有任何内容侵略您的权益,请及时联络咱们,本站将会在24小时内处理完毕。


本文来历:互联网

本文谈论
防护千万条,安全第一条;补丁没打全,中毒两行泪。
日期:05-28
回来网站主页
PaddlePaddle 是百度自主研制,集深度学习中心结构、东西组件和服务途径为一体的开源深度学习途径。...
日期:05-27
挖矿勒索两开花:安全狗提示用户留意防备勒索病毒
跟着智能电子设备的开展,家庭中用到无线网络的电子设备越来越多,再加上宽带晋级等状况,路由器的...
日期:05-10
怎样用Paddle Fluid API建立一个简略的神经网络?这里有一份编程攻略
前端开发东西包 WijmoJS 在2019年的第一个首要版别2019V1现已发布,本次发布包含了愈加易用的在线De...
日期:05-07
一键就能换新机 360家庭防火墙这个功用超赞!
“当微服务变得越来越多时,办理就会出问题。就像轿车的轮子,单个轮子必定不可,需求整装、驱...
日期:04-30
WijmoJS 2019V1正式发布:全新的在线 Demo 体系,助您快速上手,开发无忧
一个月前,公司进入张狂比稿季,各种比稿计划似乎抱团相同都向我扑来!作为公司NO.1职场女战士,我义...
日期:04-22
敞开容器年代的未来之路 看KubeSphere怎样“举重若轻”
2019年04月17日,国家信息安全缝隙同享途径(CNVD)官方发布安全布告 http://www.cnvd.org.cn/webinfo...
日期:04-22
闪退?卡顿?通通再会!自从用了WPS,一切作业666
人人都说,混合云/多云是未来。IDC曾猜测,2018年,85%以上的大型企业都将选用混合云。RightScale发...
日期:04-18
【知道创宇404实验室】Oracle WebLogic长途指令履行缝隙预警
近来,各地区教育部门相继下发规则,为了维护学生自尊心,明令禁止各个校园揭露张榜学生的成绩排名...
日期:04-18
UMCloud混合云存储,备份、归档、容灾一个也不能少
盈利完毕之后移动互联网怎样搞的问题,其间,打通巨子流量、全途径流量之外,精细化运营是重中之重...
日期:04-16
易查分—用微信做自己的考试成绩查询体系
4月4日正午前后,小刘像平常相同,按例查看公司网络体系和相关装备作业,当观看总控体系时,发现专...
日期:04-15
QuestMobile APP用户精细化运营“三大法宝”:拉新、促活、搏回流,看看淘集集、全民小视频、网易云音乐是怎样做的
开发者们推出了客户端的更新版别
  接近BCH 5月份硬分叉晋级,Bitcoin ABC开发组在本周...
日期:04-12
腾讯安全预警:3700余台SQL服务器被控制 要挟企业数据安全
一年一度的愚人节到了,朋友搭档之间敞开了“整人”比赛。愚人节是从19世纪开端在西方兴...
日期:04-01
接近晋级,BCH的开发者和爱好者们都在做什么?
3月27日音讯 3月23日,Windows 10 19H1预览版18362体系更新开端面向慢速预览通道推送,这意味着Wind...
日期:03-27
严重装置Bug  微软撤回Windows 10 19H1慢速预览版18362
3月20日音讯 从前微软推送了iOS版Outlook App客户端的测验版,带来了全新规划的新图标,其风格和Off...
日期:03-20
PARL源码走读——运用战略梯度算法求解迷宫寻宝问题
3月14日音讯 微软简直完结了Windows 10 v1903版别,并计划在4月份某个时分推出。本次更新带来了不少...
日期:03-14
微软Outlook iOS v3.15正式版更新:全新Office 365图标  都能用上了
关于把手机镜像投射到电脑上这个点子,你感觉怎样?
日期:03-13
微软新决议:Windows 10家庭版答运用户暂停更新35天
从《绝地求生大逃杀》到《堡垒之夜》再到现在的《Apex英豪》,一年又一年大逃杀游戏仍是活泼在咱们...
日期:03-10
Win10能以镜像屏方法直接控制安卓手机了
3月8日音讯 微软高管Yusuf Mehdi在推特上宣告,微软Windows 10现已在8亿多台设备上。这一数字高于9...
日期:03-08