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

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

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就是这样


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

你学会了么?

想了解更多内容,请点击阅读原文查看

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

  1. 4行关键代码实现灰色模型GM(1, 1)

    4行关键代码实现灰色模型GM(1, 1) 文章目录 4行关键代码实现灰色模型GM(1, 1) 1.灰色模型GM(1, 1) 2.重新梳理计算步骤(重点) 3.MATLAB代码手把手实现(以下高能) 4 ...

  2. python语音对话查询起始路和目的地_精选:语音对话机器人,百行Python代码就能轻松实现...

    原标题:精选:语音对话机器人,百行Python代码就能轻松实现 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 所以小的给各位看官们准备了收藏已久的视频教程分享给大 ...

  3. 100例Python代码带你从入门到进阶!

    以下所有代码全都至少运行一遍,确保可复现.易于理解.逐步完成入门到进阶的学习. 此教程经过我 反复打磨多遍 ,经常为此熬夜,真心不易,文章比较长,看完有用,帮我点个在看或分享支持. 教程包括 62 个 ...

  4. 想自学Python却不知该如何入门?这篇文章带你轻松入门Python

    以2019年的资料为蓝本,2018年的资料为补充,还参考了一些网上的教程,旨在更好地总结Python基础知识,力求简明扼要,以供实战演练时能够快速查询遗忘的知识点.学一门语言贵在坚持用它,不用就淡忘了 ...

  5. java实现语法分析器_200 行 JS 代码,带你实现代码编译器

    一.前言 对于前端同学来说,编译器可能适合神奇的魔盒 ,表面普通,但常常给我们惊喜. 编译器,顾名思义,用来编译,编译什么呢?当然是编译代码咯 . 其实我们也经常接触到编译器的使用场景: React ...

  6. Transformer入门篇-深度万字长文带你轻松入门深度学习框架

    前言 transformer结构是google在17年的Attention Is All You Need论文中提出,在NLP的多个任务上取得了非常好的效果,可以说目前NLP发展都离不开transfo ...

  7. (二)python3 只需3小时带你轻松入门——基本变量

    输入 在程序运行过程中,数据从外部流向程序,称为输入.在程序运行过程中,接收用户从键盘上键入值,可以使用input()函数. input("请输入你要输入的值:") 在输入值时,一 ...

  8. 啊这!终于不用敲代码了?Labview牛逼!带你轻松入门Labview~

    文章目录 一.Labview的三大特征 1.图形编程 2.并行性运行 3.基于数据流 二.Labview编程小tips 1.快捷键! 2.善于利用Labview中的"即使帮助" 3 ...

  9. 3W字长文带你轻松入门视觉Transformer

    作者丨深度眸@知乎 来源丨https://zhuanlan.zhihu.com/p/308301901 编辑丨极市平台 0 摘要 transformer结构是google在17年的Attention ...

最新文章

  1. ROC(receiver operating characteristic curve)曲线与ROC分析
  2. android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...
  3. 用java爬虫来提高CSDN博客访问量,浏览量
  4. 罗马数字转整数Python解法
  5. 平均成绩计算机控件,计算机技术基础(第十二章 文件 )
  6. H - Tunnel Warfare HDU - 1540
  7. 02.Teams组成概述及使用分享
  8. asp.net ajax的学习第一篇
  9. 跨浏览器实现等高栏 Equal Height Columns with Cross-Browser CSS
  10. 深度学习(四十)caffe使用点滴记录
  11. SoyNet:大豆叶部病害分类(研究思路清晰)
  12. Android应用开发之统计App时长
  13. matlab将日线编成周线,通达信公式日线10周线调用,请教通达信日线数据上引用周线数据需要用到的函数和方法...
  14. 单片机原理及应用c语言版答案,单片机原理及应用(C语言版(周国运)习题答案.doc...
  15. C-COT代码运行----Matlab2018a运行matconvnet深度卷积网络
  16. (连载)词向量的理解——one-hot向量
  17. Windows10黑体字体
  18. 搞笑的chitgpt
  19. UiAutomator Android 的自动测试框架(基础)
  20. 姚期智亲任主编,正规军的高中AI教材来了

热门文章

  1. 几个定制 iTerm2 的 tip
  2. MyEclipse10中导入的jquery文件报错(出现红叉叉,提示语法错误)
  3. Python-常用字符串转换实例
  4. Entity Framework CodeFirst数据迁移
  5. 如何理解jdk8通过行为参数化传递代码
  6. 如何区分惯性器件的零偏误差?
  7. 阅读Book:MultiObjective using Evolutionary Algorithms(7)---Weighted Sum Methods ε-Constraint Methods
  8. 2021全国高校计算机能力挑战赛(初赛)Java试题三
  9. ActiveMQ消息存储持久化
  10. hive向表格中插入数据并分析语句