0.前言

为什么要学?
因为现在免费使用gpu,穷。
官网:https://aistudio.baidu.com/aistudio/index

当官方在知乎打广告时,有个用户说的好,虽然免费但增加了学习成本。

这个确实是这样的,但计算机行业就是不断学习,正好我tf,pytorch也都不是非常熟练,学一下新的也不算白瞎了之前的知识。
我19年4月份用过一次,满意度低。现在2020年1月再去看paddle,发现比以前要好很多了,文档也多了,还有教程等,那就先试试吧。
也算是做吃螃蟹的人了。

本文参考:Paddle关键概念
官网文档: 新手入门

1.可学习参数

在Fluid中可以使用 fluid.layers.create_parameter 来创建可学习参数,如:

w = fluid.layers.create_parameter(name='w', shape=[1], dtype='float32')

有点像tf.Variable()。
但实际中,因为Paddle已经为大部分常见的神经网络基本计算模型进行了封装,如创建全链接层,并不需要自己手动创建链接权重w与偏置b,如下:

y = fluid.layers.fc(input=x, size=128, bias_attr=True)

2.输入数据Tensor

Fluid使用 fluid.layers.data() 方法来接受输入数据,与TensorFlow中的placeholder占位符作用是相同的。fluid.layers.data()方法需要定义好输入Tensor的形状,如果遇到无法确定形状的维度,则设置为None。如:

x = fluid.layers.data(name='x', shape=[3, None], dtype='int64')

3.Paddle数据传入

Python Reader同步读入数据:使用 fluid.layers.data()定义输入层,并在 fluid.Executor或 fluid.ParallelExecutor中使用 executor.run(feed=...)来传入数据,与TensorFlow类似,定义好Placeholder占位符,再在具体训练时,将具体的数据喂养给模型
另外,还有py_reader异步读入数据方法。

4.一个小例子

import paddle.fluid as fluid

#输入层
a = fluid.layers.data(name='a', shape=[2], dtype='float32')
b = fluid.layers.data(name='b', shape=[2], dtype='float32')
result = fluid.layers.elementwise_add(a,b)

cpu = fluid.CPUPlace() # 定义运算场所
exe = fluid.Executor(cpu) # 创建执行器
exe.run(fluid.default_startup_program()) # 网络参数初始化

# 准备数据
import numpy
x = numpy.array([1,2])
y = numpy.array([2,3])
#执行计算
outs = exe.run(feed={'a':x,'b':y},
			   fetch_list=[a,b,result.name])
#查看输出结果
print(outs)

我在平台上跑了一下,这是结果:
在这里插入图片描述
我发现用起来其实也还好,没有所谓的那么差。

5.动态图 vs 静态图

动态计算意味着程序将按照我们编写命令的顺序进行执行。这种机制将使得调试更加容易,并且也使得我们将大脑中的想法转化为实际代码变得更加容易。而静态计算则意味着程序在编译执行时将先生成神经网络的结构,然后再执行相应操作

后续会对具体任务做探索。

更多推荐