paddlepaddle基础入门
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 静态图
动态计算意味着程序将按照我们编写命令的顺序进行执行。这种机制将使得调试更加容易,并且也使得我们将大脑中的想法转化为实际代码变得更加容易。而静态计算则意味着程序在编译执行时将先生成神经网络的结构,然后再执行相应操作
后续会对具体任务做探索。
更多推荐

所有评论(0)