PaddlePaddle系列之三行代码从入门到精通

作者 | 金天

编辑 | Vincent

AI前线出品| ID:ai-front

AI 前线导语:“作者本人说,这将是 PaddlePaddle 系列教程的开篇,属于非官方教程。既然是非官方,自然会从一个使用者的角度出发,来教大家怎么用,会有哪些坑,以及如何上手并用到实际项目中去”。

本文首发在作者 GitHub:https://jinfagang.github.io,现由作者授权,AI 前线整理发布。

三行代码 PaddlePaddle 从入门到精通

PaddlePaddle 是百度大力推出的一个框架,不得不说相比于 tensorflow,PaddlePaddle 会简单很多,接下来我会细说。同时百度在人工智能方面的功底还是非常深厚,我曾经在腾讯实习,类似于 AT 这样的公司,甚至没有一个非常成型的框架存在。

既然是三行代码精通 PaddlePaddle,那么得安装一下 PaddlePaddle。就目前来说,最好的办法是 build from source。步骤如下 (注意,这里是 CPU 版本,GPU 版本的源码编译过程后续补充,我们先用 CPU 来熟悉 API):

好了,看上去应该算是安装完了。接下来我们用三行代码来测试一下?

PaddlePaddle 在 python API 上 0.10 有较大的变化,所以直接 import 一下 v2 版本的 API。如果可以说明 PaddlePaddle 安装没有问题。这里赞一下百度的技术功底和用户体验,这尼玛要是 caffe 或者 caffe2 编译出错概率 100% 不说,python 安装了也不能 import,PaddlePaddle 一步到位,非常牛逼。

闲话不多说,直接三行代码来熟悉一下 PaddlePaddle 的 API。

三行代码来了

接下来要做的事情是,用 PaddlePaddle 搭建一个 3 层 MLP 网络,跑一个二维的 numpy 随机数据,来了解一下 PaddlePaddle 从数据喂入到训练的整个 pipeline 吧。

首先我们这个教程先给大家展示一个图片分类器,用到的数据集是 Stanford Dogs 数据集, 下载链接, 大概 800M, 同时下载一下 annotations, 大概 21M。下载好了我们用一个 paddle_test 的文件夹来做这个教程吧。

把所有的 images 和 annotations 扔到 data 里面去,解压一下:

顺便说一下,这里的 annotations 是为后面用 paddlepaddle 做分割做准备,本次分类任务,只需要一个 images.tar 就可以了,所有图片被放在了该类别的文件夹下面,以后处理其他分类任务时,只需要把不同类别放在文件夹就 OK 了,甚至不用改代码,非常方便,这比 MXNet 要有道理很多,多数情况下我们根本不需要海量图片训练,也没有必要搞个什么 imrecord 的数据格式,MXNet 导入图片真心蛋疼,没有 Pytorch 方便,但是 Pytorch 得运行速度堪忧。

OK,将 images.tar 解压,会得到 120 个文件夹,也就是 120 个类别,每个类别里面都是一种狗狗图片。

我们现在要来处理一下这些蠢狗。

开始写三行代码

好了,开始写三行代码了.

实际上 PaddlePaddle 的使用也就是三行代码的事情,首先是网络构建,这里我们构建一个 VGG 网络,其次是 event 的处理函数,这个机制是 PaddlePaddle 独有的,PaddlePaddle 把所有的训练过程都包装成了一个 trainer,然后调用这个 event_handler 来处理比如打印 loss 信息这样的事情。OK,我们一步一步来,先来看一下 train 的过程把:

PaddlePaddle 的网络训练流程分为几个步骤:

1、首先定义网络,这里的网络不包括最后一层的 softmax;

2、创建一个 cost,cost 当然就需要一个网络的输出和 lable 了;

3、通过这个 cost 来创建网络训练的参数,非常简单明了;

4、最后是优化器,这里定义反向传播的正则项,学习速率调整策略等;

5、通过上面这些创建一个 trainer;

6、最后这个 trainer 要训练起来,还需要持续的数据喂入,时间处理函数,和喂入的方式。

接着我们看一下网络定义和事件处理函数:

这里我们先用 PaddlePaddle 内置的 cifar10 来测试一下能否训练起来,把上面的代码加上 import 之后:

在主函数里面运行 train()。见证奇迹的时刻到了。。

PaddlePaddle 开始下载数据,并打印出了网络结构!

so far so good,PaddlePaddle 开始训练网络!!!

牛逼了我的哥。接下来我们用这个代码来保存网络训练之后的权重:

最后,模型 train 好之后,导入模型进行预测:

OK, 本次列车到此结束,对于 PaddlePaddle 如何训练一个图片分类器,应该有了一个清醒的认识,下一步,我们将继续…. 用 PaddlePaddle 实现一个 NLP 情感分类器!

作者介绍

金天,清华大学在读研究生,深度学习领域研究者;热爱人工智能,以及电子硬件制作,是要成为钢铁侠的男人;欧曼信息科技有限公司 CEO,业余魔术师。


-全文完-

关注人工智能的落地实践,与企业一起探寻 AI 的边界,AICon 全球人工智能技术大会火热售票中,8 折倒计时一周抢票,详情点击:

http://t.cn/Rl2MGtT

《深入浅出TensorFlow》迷你书现已发布,关注公众号“AI前线”,ID:ai-front,回复关键字:TF,获取下载链接!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,050评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,538评论 1 306
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,673评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,622评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,047评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,974评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,129评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,893评论 0 209
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,654评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,828评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,297评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,619评论 3 262
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,326评论 3 243
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,176评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,975评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,118评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,909评论 2 278

推荐阅读更多精彩内容