这两天参加了百度飞桨组织的《高层API助你快速上手深度学习》的实战课程,这是飞桨在本月份推出paddlepaddle2.0正式版后,第一个系列介绍课程。
课程的内容涉及计算机深度学习视觉与NLP,主题包括:十二生肖分类、人脸关键点检测、美食评论分析、自动对春联四个任务。通过几天的实践,大体对
高层API的使用及一般任务处理流程有所了解,本文就把这些内容进行简单介绍。
一、paddle2.0开发框架
课程使用的深度学习开发框架paddle的名字来历如上所示。paddle2.0作为正式拥抱动态模型的开始,应该说与目前主流的PyTorch、TensorFlow2.0大体处于了同一个水平。
从官方的api文档中了解到,paddle.fluid.*, paddle.dataset.* 会在未来的版本中废弃。paddle.fluid是1.x的主要api路径,可以说本次的更新是根本性的。
api结构的设计,可以看出类PyTorch的影子。熟悉PyTorch的人,可以很容易上手。
paddle2.0开发框架设计,也类似PyTorch,将视觉、NLP的处理单独进行包的组织:paddle.text、paddle.vision。paddle的扩展库,以前给人的感觉就是太多、太杂。
这次从开发人员的消息中了解到,paddle.text、paddle.vision中会持续将其他扩展库的内容进行吸收、整合。
二、高层API的使用流程
高层API对标的是Keras级别的封装。以高效开发、使用便利为目标。
将开发流程划分为6个步骤:
- 问题定义---明确任务及处理的数据
- 准备数据---收集数据,将数据包装成dataset。这里主要使用paddle.io.Dataset、paddle.io.DataLoader类完成。
- 模型选择与开发---paddle.vision.models及paddle.text.model下预置了一些常用的模型。不可否认,目前模型还比较少。
- 模型训练与调优---过去使用底层api开发时,是耗时很多的地方。目前使用paddle.Model将模型封装后,
就可以用model.prepare进行模型训练配置,使用model.fit进行训练,与传统的sklearn库使用接口类似。
5.模型评估测试---模型评估用model.evaluate即可完成,测试用model.predict,都尽量简化。
6.部署上线---只要将训练合格的模型用model.save(path,traing=False)保存,就可将模型用于部署。
高层api,基本简化到一个步骤使用一、两个函数即可完成。
三、网络设计方式
深度学习中,算法设计的核心工作就是构建合适的深度学习网络。paddle2.0中提供了3种构建方式:
方式一:使用paddle.nn.Sequential,构建串行的网络结构。这种方式能有一定灵活性,但有限,处于3种方式中的中间位置。
方式二:实现paddle.nn.Layer的子类。这种方式最灵活,是专业人员构建复杂模型的首选。
方式三:直接使用内置的模型。paddle.vision.models与paddle.text.models下,预置了一些模型。使用最简单,但受限制也最大。
四、部署方式
百度的的Paddle系列,对模型部署提供了全方位的支持:
- web端推理---使用Paddle.js
- 移动端与嵌入设备---使用Paddle Lite
- 云服务部署---Paddel Serving
- 服务器部署---Paddle Inference,使用服务器的GPU计算能力,提供推理支持。
以上为Paddle家族对训练、部署的支持工具集合,其中X2Paddle用于将TensorFlow、PyTorch的模型转换为Paddle的专用格式。
从几天的了解,Paddle2.0是真正具有了替代PyTorch、TensorFlow的能力。希望在未来的国家间AI赛道上,Paddle能够作为中国的支撑。