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就是这样
一个易学易用的深度学习框架
你学会了么?
想了解更多内容,请点击阅读原文查看
19行关键代码,带你轻松入门PaddlePaddle单机训练相关推荐
- 4行关键代码实现灰色模型GM(1, 1)
4行关键代码实现灰色模型GM(1, 1) 文章目录 4行关键代码实现灰色模型GM(1, 1) 1.灰色模型GM(1, 1) 2.重新梳理计算步骤(重点) 3.MATLAB代码手把手实现(以下高能) 4 ...
- python语音对话查询起始路和目的地_精选:语音对话机器人,百行Python代码就能轻松实现...
原标题:精选:语音对话机器人,百行Python代码就能轻松实现 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 所以小的给各位看官们准备了收藏已久的视频教程分享给大 ...
- 100例Python代码带你从入门到进阶!
以下所有代码全都至少运行一遍,确保可复现.易于理解.逐步完成入门到进阶的学习. 此教程经过我 反复打磨多遍 ,经常为此熬夜,真心不易,文章比较长,看完有用,帮我点个在看或分享支持. 教程包括 62 个 ...
- 想自学Python却不知该如何入门?这篇文章带你轻松入门Python
以2019年的资料为蓝本,2018年的资料为补充,还参考了一些网上的教程,旨在更好地总结Python基础知识,力求简明扼要,以供实战演练时能够快速查询遗忘的知识点.学一门语言贵在坚持用它,不用就淡忘了 ...
- java实现语法分析器_200 行 JS 代码,带你实现代码编译器
一.前言 对于前端同学来说,编译器可能适合神奇的魔盒 ,表面普通,但常常给我们惊喜. 编译器,顾名思义,用来编译,编译什么呢?当然是编译代码咯 . 其实我们也经常接触到编译器的使用场景: React ...
- Transformer入门篇-深度万字长文带你轻松入门深度学习框架
前言 transformer结构是google在17年的Attention Is All You Need论文中提出,在NLP的多个任务上取得了非常好的效果,可以说目前NLP发展都离不开transfo ...
- (二)python3 只需3小时带你轻松入门——基本变量
输入 在程序运行过程中,数据从外部流向程序,称为输入.在程序运行过程中,接收用户从键盘上键入值,可以使用input()函数. input("请输入你要输入的值:") 在输入值时,一 ...
- 啊这!终于不用敲代码了?Labview牛逼!带你轻松入门Labview~
文章目录 一.Labview的三大特征 1.图形编程 2.并行性运行 3.基于数据流 二.Labview编程小tips 1.快捷键! 2.善于利用Labview中的"即使帮助" 3 ...
- 3W字长文带你轻松入门视觉Transformer
作者丨深度眸@知乎 来源丨https://zhuanlan.zhihu.com/p/308301901 编辑丨极市平台 0 摘要 transformer结构是google在17年的Attention ...
最新文章
- ROC(receiver operating characteristic curve)曲线与ROC分析
- android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...
- 用java爬虫来提高CSDN博客访问量,浏览量
- 罗马数字转整数Python解法
- 平均成绩计算机控件,计算机技术基础(第十二章 文件 )
- H - Tunnel Warfare HDU - 1540
- 02.Teams组成概述及使用分享
- asp.net ajax的学习第一篇
- 跨浏览器实现等高栏 Equal Height Columns with Cross-Browser CSS
- 深度学习(四十)caffe使用点滴记录
- SoyNet:大豆叶部病害分类(研究思路清晰)
- Android应用开发之统计App时长
- matlab将日线编成周线,通达信公式日线10周线调用,请教通达信日线数据上引用周线数据需要用到的函数和方法...
- 单片机原理及应用c语言版答案,单片机原理及应用(C语言版(周国运)习题答案.doc...
- C-COT代码运行----Matlab2018a运行matconvnet深度卷积网络
- (连载)词向量的理解——one-hot向量
- Windows10黑体字体
- 搞笑的chitgpt
- UiAutomator Android 的自动测试框架(基础)
- 姚期智亲任主编,正规军的高中AI教材来了
热门文章
- 几个定制 iTerm2 的 tip
- MyEclipse10中导入的jquery文件报错(出现红叉叉,提示语法错误)
- Python-常用字符串转换实例
- Entity Framework CodeFirst数据迁移
- 如何理解jdk8通过行为参数化传递代码
- 如何区分惯性器件的零偏误差?
- 阅读Book:MultiObjective using Evolutionary Algorithms(7)---Weighted Sum Methods ε-Constraint Methods
- 2021全国高校计算机能力挑战赛(初赛)Java试题三
- ActiveMQ消息存储持久化
- hive向表格中插入数据并分析语句