首页 Paddle框架 帖子详情
19行关键代码,带你轻松入门Paddle单机训练
收藏
快速回复
Paddle框架 文章深度学习 1622 5
19行关键代码,带你轻松入门Paddle单机训练
收藏
快速回复
Paddle框架 文章深度学习 1622 5

19行关键代码,带你轻松入门PaddlePaddle单机训练

 

刚接触深度学习框架的同学可能会说

新入手一个框架是不是会很难?

NO,NO,NO

PaddlePaddle的宗旨就是“easy to use!”

PaddlePaddle是百度自研的集深度学习框架、工具组件和服务平台为一体的技术领先、功能完备的开源深度学习平台,有全面的官方支持的工业级应用模型,涵盖自然语言处理、计算机视觉、推荐引擎等多个领域,并开放多个领先的预训练中文模型。

下面,就让作者带你

打开一扇深度学习的新大门

 

19行代码入门PaddlePaddle单机训练!

第1行

在Python环境下安装PaddlePaddle框架,万里征程开头难,输完这行指令,你已经成功了一大半!

pip install paddlepaddle

第2-3行

进入代码环境,导入数据包,没啥可说的

import paddle as paddle import paddle.fluid as fluid

第4-7行

定义模型,定义输入输出,轻松搞定

image = fluid.layers.data(name='image', shape=[1, 28, 28], dtype='float32') label = fluid.layers.data(name='label', shape=[1], dtype='int64') hidden = fluid.layers.fc(input=image, size=100, act='relu') prediction = fluid.layers.fc(input=hidden, size=10, act='softmax')

第8-10行

定义损失函数(交叉熵)和准确率函数

cost = fluid.layers.cross_entropy(input=prediction, label=label) avgcost = fluid.layers.mean(cost) acc = fluid.layers.accuracy(input=prediction, label=label)

第11-12行

定义优化方法,使用Adam算法进行优化,其实随便什么优化方法都可以,随你喜欢啦

optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.001) opts = optimizer.minimize(avg_cost)

第13-14行

在模型结构搭建完之后,我们需要对参数进行初始化。

注:我们这里采用CPU单机单卡训练,如果使用多GPU训练,参数需要先在GPU0上初始化,再经由fluid.ParallelExecutor 分发到多张显卡(详细内容可以参考文末链接)

exe = fluid.Executor(fluid.CPUPlace()) exe.run(fluid.default_startup_program())

第15-16行

准备输入训练数据,使用框架自带MNIST数据集

train_reader = paddle.batch(paddle.dataset.mnist.train(), batch_size=128) feeder = fluid.DataFeeder(place=fluid.CPUPlace(), feed_list=[image, label]) 

第17-18行

啦啦啦,开始训练,2行代码轻松搞定

for batch_id, data in enumerate(train_reader()): train_cost,train_acc = exe.run(program=fluid.default_main_program(), feed=feeder.feed(data), fetch_list=[avg_cost, acc]) 

有兴趣的同学也可以通过增加代码print('Batch:%d, Cost:%0.5f, Accuracy:%0.5f' %(batch_id, train_cost[0], train_acc[0]))自行把训练过程打印出来看一下

Batch:0, Cost:3.17834, Accuracy:0.04688 Batch:50, Cost:0.53703, Accuracy:0.82031 Batch:100, Cost:0.47778, Accuracy:0.83594 Batch:150, Cost:0.34092, Accuracy:0.90625 Batch:200, Cost:0.25703, Accuracy:0.92188 Batch:250, Cost:0.37539, Accuracy:0.86719 Batch:300, Cost:0.24384, Accuracy:0.94531 Batch:350, Cost:0.51838, Accuracy:0.84375 Batch:400, Cost:0.40187, Accuracy:0.85938 Batch:450, Cost:0.36615, Accuracy:0.89062 

第19行

训练完成,保存模型,任务完成!

fluid.io.save_inference_model("model", ['image'], [prediction], exe)

好吧,看到这里你说,

是19行代码就完成单机训练

没错,

但是完全没感觉啊,

训练好了该怎么用呢?

不着急,我们试试拿一个实例

来测试一下!

预测实例

继续导入2个基础数据包,备用

import numpy as np import pickle

加载预测数据,需要下载源项目文件

链接:https://pan.baidu.com/s/1axSjJ9XVTI7MYY25WpqZtg 

提取码:rkhg 
对,我们需要对付的,

就是这样歪歪扭扭的家伙!

源项目中已经把图片处理好了保存在bin文件里面,可以直接读取

load_file=open("save.bin","rb") img=pickle.load(load_file) act_label=pickle.load(load_file) load_file.close()

导入训练好的模型,开始预测

with fluid.scope_guard(fluid.core.Scope()): [infer_prog,feed_names,targets]= fluid.io.load_inference_model("model", exe) results = exe.run(program=infer_prog, feed={feed_names[0]: img}, fetch_list=targets)

打印输出,搞定!

print("实际数字为: %d" % act_label) print("预测结果为: %d" % np.argsort(results)[0][0][-1]) 

 

最终结果

实际数字为: 3

预测结果为: 3

DuangDuangDuang!!

除去数据准备和打印输出,

真正的核心预测代码也只有3行而已,

惊不惊喜,意不意外?

是的,没错

PaddlePaddle就是这样

一个易学易用的深度学习框架

你学会了么?

0
收藏
回复
全部评论(5)
时间顺序
w
wangwei8638
#2 回复于2019-07

果然简捷

0
回复
l
lmz1996
#3 回复于2019-12

你好,文中说的会在文末贴出多卡训练方法,请问链接在哪里?

0
回复
划飞桨的Daniel
#4 回复于2020-01
lmz1996 #3
你好,文中说的会在文末贴出多卡训练方法,请问链接在哪里?

多机训练可以看一下“飞桨官网-文档-使用指南-训练神经网络-多机训练”,链接发不出来,会被判定为推广

0
回复
才能我浪费99
#5 回复于2020-01

简单易用

0
回复
才能我浪费99
#6 回复于2020-01

工程性非常好

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户