[PaddleFluid小试牛刀]练习一·DNN线性拟合
PaddlePaddle介绍
- PaddlePaddle是百度提供的开源深度学习框架,它能够让开发者和企业安全、快速地实现自己的AI想法
- 项目团队汇聚了全球顶级的深度学习科学家,致力于为开发者和企业提供最好的深度学习研发体验
- 框架本身具有易学、易用、安全、高效四大特性,是最适合中国开发者和企业的深度学习工具
code
#加载库
import paddle.fluid as fluid
import numpy
#定义数据
train_data=numpy.array([[1.0],[2.0],[3.0],[4.0]]).astype('float32')
y_true = numpy.array([[2.0],[4.0],[6.0],[8.0]]).astype('float32')
#定义网络
x = fluid.layers.data(name="x",shape=[1],dtype='float32')
y = fluid.layers.data(name="y",shape=[1],dtype='float32')
l1 = fluid.layers.fc(input=x,size=2,act="relu")
y_predict = fluid.layers.fc(input=l1,size=1,act=None)
#定义损失函数
avg_cost = fluid.layers.mean(fluid.layers.square_error_cost(input=y_predict,label=y))
#定义优化方法
sgd_optimizer = fluid.optimizer.Adam(learning_rate=0.01)
sgd_optimizer.minimize(avg_cost)
#参数初始化
cpu = fluid.core.CPUPlace()
exe = fluid.Executor(cpu)
exe.run(fluid.default_startup_program())
##开始训练,迭代100次
for i in range(1,2001):
outs = exe.run(
feed={'x':train_data,'y':y_true},
fetch_list=[y_predict.name,avg_cost.name])
if(i%100 == 0):
#输出loss
print(i," steps Loss is",outs[1])
#观察结果
print("Final Pre \n",outs[0])
out
(paddle) C:\Files\DATAs\prjs\python\paddle\demo>C:/Files/APPs/RuanJian/Miniconda3/envs/paddle/python.exe c:/Files/DATAs/prjs/python/paddle/demo/liner.py
100 steps Loss is [19.995567]
200 steps Loss is [1.1098802]
300 steps Loss is [0.4495614]
400 steps Loss is [0.31467533]
500 steps Loss is [0.1992905]
600 steps Loss is [0.11252441]
700 steps Loss is [0.05591184]
800 steps Loss is [0.02425095]
900 steps Loss is [0.00916326]
1000 steps Loss is [0.00302502]
1100 steps Loss is [0.0008769]
1200 steps Loss is [0.00022424]
1300 steps Loss is [5.0713417e-05]
1400 steps Loss is [1.0143418e-05]
1500 steps Loss is [1.7896114e-06]
1600 steps Loss is [2.7729777e-07]
1700 steps Loss is [3.7570317e-08]
1800 steps Loss is [4.49603e-09]
1900 steps Loss is [4.896634e-10]
2000 steps Loss is [6.7430506e-11]
Final Pre
[[2.0000126]
[4.0000057]
[5.999998 ]
[7.9999914]]