paddle和paddlepaddle,paddlepaddle使用

  paddle和paddlepaddle,paddlepaddle使用

  PaddlePaddle的基础操作目录PaddlePaddle安装pip安装Docker安装PaddlePaddle基础语法1。数据结构2。导入数据3。数据处理。神经

  目录

  第一篇博客主要是关于paddlepaddle的简介、安装和基本语法(如果你接触过其他框架,可以很容易地访问paddlepaddle)。

  PaddlePaddle简介PaddlePaddle是百度开发的开源开放的深度学习平台。拥有全面的、官方支持的行业应用模式,包括自然语言处理、计算机视觉、推荐引擎等诸多领域。

  PaddlePaddle还可以提供同时支持密集和稀疏参数场景、大规模深度学习并行训练、千亿级参数、支持数百点的高效并行训练、深度学习并行技术的深度学习框架。预计PaddlePaddle将支持服务器、移动等各种异构硬件设备的快速推理,从而显著提升性能。目前PaddlePaddle已经实现了API的稳定性和后向兼容性,拥有完善的中英文双语文档。

  开发(最新版本是Fluid版,博客用1.3版,功能和模块接口稳定))。

  PaddlePaddle安装PaddlePaddle目前支持的Python版本是

Python 2.7-3.7

  PaddlePaddle目前支持以下环境:

  Ubuntu 14.04 /16.04 /18.04

  CentOS 7/6

  MacOS 10.11/10.12/10.13/10.14

  Windows7/8/10(专业版/企业版)

  如果pip安装在anaconda环境中,可以直接使用,请直接在cmd命令框中输入。

  Pip Paddle Paddle可以安装cpu版本。如果您想要安装GPU版本,请使用命令

  请注意,pip安装paddlepaddle-gpu是直接使用pip安装的流体版本,pip默认安装最新版本。安装早期版本的V1或V2时需要其他命令。0.12版之前的V2

  安装旧版本的说明:

  PISTALLPaddlePaddle==[paddle paddle版本号。]PISTALLPaddlePaddle-GPU==[paddle paddle版本号。]文档安装PaddleHub。百度BCE.com/paddle Paddle/Paddle 3360[文档版本号] /jjddp/bash paddlePaddle语法基础1。数据结构桨神经网络张量可以简单理解为进程的多维数组,张量一般可以有任意多个维度。不同的张量有它们自己的数据类型和形状。同一个张量中元素的数据类型是相同的,张量的形式就是张量的维数。

  下图显示了1-6维的张量:

  模型中可学习参数的设置方法

  在模型设置中,网络的权值和偏差等可学习参数存在于网络设置的整个周期中,并通过优化算法进行更新。流体由变量的子类Parameter表示,用于在流体中创建可以被fluid.layers.create_parameter学习的参数W=Fluid . layers . create _ Parameter(name= W ,shape=[1])。例如,在下面的示例中,通过显式调用与参数相关的接口来创建代码。

  set import paddle . fluidasfluidy=fluid . layers . fc(input=x,size=128,bias_attr=True(#bias_attr参数设置为True

  流体使用fluid.layers.data接收输入数据。Fluid.layers.data必须提供输入张量的形状信息。如果遇到未确定的维度,相应的维度将指定无。整个神经网络的输入数据是一个特殊的张量。在定义模型时,张量不能直接确定某些维度的大小(通常包括batchsize,如果mini-batch之间的数据是可变的,图像的宽度和高度)。我个人理解fluid.layers.data是在做了一个空容器之后做的。

  数据赋值可以参与神经网络的各种计算。

  示例:

  Import paddle.fluid as fluid#将x的维度定义为[3,无]。实际上我们只能确定x的第一维度是3,第二维度未知。只有在程序执行过程中我们才能确定x=fluid.layer.data (name= x ,shape=[3,none],Dtype=int64)#batch_size不需要指定,框架会自动完成第0个维度作为批量大小,并在运行时填入正确的值a=fluid.layers.data (name= a ,shape=[3,4 ,Dtype= int 64 )#如果图片的宽度和高度在运行时是可变的,#shape的三个维度的含义是:通道b=fluid . layers . data(name= image ,shape=[3,none,none],dtype= float32 )常量张量的设置。fluid.layers.fill_constant用于实现流体中的常数张量,

  进口桨。流体作为流体数据=fluid . layers . fill _ constant(shape=[1],value=0,dtype= int64 。但是上面定义的张量并没有值,只是表示要执行的操作,具体的输出值会在执行器运行的时候得到。打印数据以获得一条描述数据的信息:

  名称:" fill_constant_0.tmp_0 "

  类型{

  类型:LOD _张量

  lod _张量{

  张量{

  数据类型:INT64

  dims: 1

  }

  }

  }

  可持续:假

  2.数据导入液有特定的数据导入方式:

  同步feed的方法

  首先要在fluid.layers.data中配置数据输入层,使用executor.run()在fluid中输入训练数据。Executor或fluid.ParallelExecutor .数据准备和模型训练/预测的过程是同步的,效率较低。异步py_reader接口模式

  用户需要先使用fluid.layers.py_reader配置数据输入层,然后使用py_reader的decorate_paddle_reader或decorate_tensor_provider方法配置数据源,再通过fluid.layers.read_file读取数据,数据输入和模型训练/预测的过程是异步的,效率高。3.数据操纵在Fluid中,所有对数据的操作都是用Operator来表示的,你可以用内置指令来描述它们的神经网络。

  为了方便用户,在Python中,流体中的运算符一步封装成paddle.fluid.layers、paddle.fluid.nets等模块。

  这是因为张量上的一些常见运算可能是由更多的基本运算组成的。为了提高使用的便利性,框架中封装了一些基本的算子,包括创建依赖于算子的可学习参数,可学习参数的初始化细节等。从而降低用户重复开发的成本。

  定义执行程序的操作#定义执行程序CPU=fluid.core.cpuplace () #定义操作位置。这里选择训练exe=fluid。executor(CPU)# Create executor exe . run(fluid . default _ sat rtup _ program())#初始化网络参数2 .综合案例-定义一个加法器。

  #导入依赖库Import paddle . fluid as fluid Import paddle Import numpy as NP #设置两个容器A和B来存储变量A=fluid.layers.data (name= a ,shape= float 32 ),Dtype= float32 ),b=fluid.layers.data (name= b ,shape= float 32 ),dtype= float32) #定义计算过程Result=fluid.layers.sum ([a,b]) #定义执行机构CPU=fluid.core .选择这里在CPU exe=fluid下训练。executor(CPU)# create executor exe . run(fluid . default _ startup _ program())#网络参数初始化#准备数据data _ 1=float (input(请输入一个num:a=)Data _ 2=float(input(请输入一个num: a=)) x=NP。数组([data _ 1]) y=NP。array([data _ 2])# perform calculation OUTS=exe . Run(feed={ a :x, b )Fetch _ list=[result . name])# Fetch _ list控制输出结果,其他变量可以添加到output # verify结果打印( %d% d=% d% (data _ 1,data _ 2,outs [0] [0]运行结果:

  4.Fluid是一种神经网络相关的操作,不同于其他大多数深度学习框架。它去掉了静态计算图的概念,而是以程序的形式动态地描述计算过程。这种动态计算描述方法既有网络结构修改的灵活性,又有建模的便利性,在保证性能的同时,大大提高了框架对模型的表达能力。

  开发者的所有操作员都将写入程序,在液体内部将自动转化为一种叫作程序描述的描述语言,程序的定义过程就像在写一段通用程序,有开发经验的用户在使用液体时,会很自然的将自己的知识迁移过来。

  其中,流体通过提供顺序、分支和循环三种执行结构的支持,让用户可以通过组合描述任意复杂的模型。

  顺序执行

  用户可以使用顺序执行的方式搭建网络:x=fluid.layers.data(name=x ,shape=[13],dtype= float 32 y _ predict=fluid。层次。fc(输入=x,大小=1,行为=无)y=流体。层次。数据(name= y ,shape=[1],dtype= float 32 )成本=流体。层次。square _ error _ cost(输入=y _ predict,标签=y)条件分支开关,如果有

  液体中有转换和语句类来实现条件选择,用户可以使用这一执行结构在学习率调节器中调整学习率或其他希望的操作:lr=流体。层次。张量。create _ gloabl _ var(shape=[1],value=0.0,dtype=float32 ,persistable=True,name= learning _ rate )one _ var=fluid。层次。fill _ constant(shape=[1],dtype=float32 ,value=1.0)two _ var=流体。层次。用流体填充常量(shape=[1],dtype=float32 ,value=2.0)。层次。控制流。开关()作为开关:带开关。case(global _ step==zero _ var):流体。层次。张量。赋值(输入=one _ var,输出=lr) PaddlePaddle案例实战1.问题描述

  2.定义数据

  3.搭建网络

  4.添加损失函数

  5.网络优化

  最后附上完整代码:

  #加载库导入桨。流体作为流体导入数量作为np#定义数据train_data=np.array([[1.0]、[2.0]、[3.0]、[4.0]]).astype( float 32 )y _ true=NP。数组([[2.0]、[4.0]、[6.0]、[8.0]).astype(float32)#定义网络x=fluid.layers.data(name=x ,shape=[1],dtype=float32 )y=流体。层次。data(name= y ,shape=[1 ,dtype= float 32 ),y _ predict=fluid。层次。fc(输入=x,大小=1,行为=无)#定义损失函数成本=流动性。层次。square _ error _ cost(输入=y _ predict,标签=y)avg _ cost=fluid。层次。平均值(成本)#定义优化方法SGD _ optimizer=流体。优化器。SGD(learning _ rate=0.01)SGD _ optimizer,minimize(avg_cost)#参数初始化CPU=流体。核心。CPU place()exe=fluid .执行程序(CPU)exe。运行(流体。default _ startup _程序())#开始训练,迭代100次对于范围内的I(100):out=exe。run(feed={ x :train _ data, y:y_true},fetch_list=[y_predict.name,avg_cost.name])#观察结果打印(输出)

paddle和paddlepaddle,paddlepaddle使用