飞桨c语言,技术公开课实录:飞桨编程指南和特性解读

58a909248d834168a663cf3211abb88e.gif

导读:飞桨(PaddlePaddle)致力于让深度学习技术的创新与应用更简单。为了让更多的开发者了解飞桨的最近技术进展,特别组织了系列技术稿件,视频来源于2019 Wave Summit秋季深度学习开发者峰会上的技术公开课。

本期是由百度飞桨主任架构师为大家带来飞桨编程指南和特性解读,敬请观看。

视频关键知识点Notes:

01

编程指南

飞桨核心框架整体分为五个部分:模型组网、模型表达与优化、模型训练、以及服务器和移动端的预测部署。飞桨1.6版本,在服务器端增加了C语言的API,同时加强了与模型压缩PaddleSlim、端侧推理引擎Paddle Lite的配合。

6f6165150b6a3b14d877086a7ba50275.png

1.1 编程接口API

飞桨在Python层能够调用的API超过一千个。主要分为两类。一类是框架类API,另一类是组网类API。框架类API用来定义执行过程,包括执行器、模型的存取、分布式计算这些整体训练流程的控制API。而组网类的API里面包含重要的基础数据结构、算子、网络层等。

1.2 网络结构Program

在飞桨的整个开发过程当中,用Program表示整个网络结构,一个Program里面会包含很多的Block,代表了写程序时的控制流程。Block内部有两类重要的东西,一类就是数据,另一类就是计算。通常所谓的Tensor数据,飞桨统一用Variable来表示,包括各种数据类型。而在Layer里则是各种计算。

02

新特性与升级

2.1  基础API升级

飞桨在1.6版本升级了很多类型和序列的检查,在一些常用的OP上增加了Tensor输入。在过去飞桨的版本里面,很多OP需要输入一个定义好的数据,这样在组某些网络结构会不够灵活。通过支持Python的输入,现在可以实时计算拿到Python的维度。

2.2  面向对象式API

在原生飞桨的API里更多采用了函数制的API,缺点是在定义一层复杂网络后,想要访问变得非常困难。针对这样的问题,飞桨1.6进一步升级了面向对象式的API,Layer可以通过面向对象的方式实现。先做成员的定义,再做成员函数调用,更容易控制中间成员的变量。

2.3  动态执行模式

动态执行模式和静态执行模式的组网过程完全相同。区别是需要做整个数据变量的定义,可以实时的拿到数据,有极高的可调试性。

2.4  数据异步读取API

飞桨1.6版本之前,数据读取主要采用异步读取PyReader,把计算和数据的IO折叠起来,充分的利用性能。虽然效率比较高,但会调用整个Program,对整个网络结构产生变化。飞桨1.6中增加了DataLoader接口,数据的异步读取而不会改变网络结构,既高效又保证了易用性。

2.5  Seq2Seq API

在旧版本的飞桨里面,使用标准结构如LSTM、GRU是非常简单的,调用API就可以了。但若想要自定义非标准的结构就会有点困难。在新版本里面,飞桨做了RNNCell的封装,定义了单步计算的过程,可以参考其写出自定义的网络结构,比如加上attention等其他的操作、变换。通过调用RNN循环,得到了整个循环网络的结构。

2.6  自定义PythonAPI

飞桨1.6可以自定义的OP,加入到Program里面,作为正常的OP使用。

2.7  自定义C++Operator

对于部署到其他的生态环境的场景,飞桨也有C语言自定义C++ OP的方式。

2.8  预测API

在一些生产环境里面,比如像Java或PHP,实际上调用C++会比较麻烦。飞桨1.6增加了一套C语言的API,可以很容易的将接口集成到Java里面,实现快速的部署。

进入网盘获取视频中的PPT,链接:

https://pan.baidu.com/s/1WayOHKsx3g2wDbqz1w8-ww密码:ss8u

想与更多的深度学习开发者交流,请加入飞桨官方QQ群:796771754。

如果您想详细了解更多飞桨PaddlePaddle的相关内容,请参阅以下文档。

官网地址:

https://www.paddlepaddle.org.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值