一.HelloWord
import paddle.fluid as fluid
#创建两个常量
x=fluid.layers.fill_constant(shape=[1], #张量的维度
dtype='int64', #类型
value=5) #值
y=fluid.layers.fill_constant(shape=[1], #张量的维度
dtype='int64', #类型
value=1) #值
# 定义计算规则
z=x + y
#创建执行器
place=fluid.CPUPlace() #指定在CPU上运行
exe=fluid.Executor(place) #创建执行器
result=exe.run(fluid.default_main_program(),#执行
fetch_list=[z]) #取出变量z的值
print(result[0][0])
二.两个张量计算
import paddle.fluid as fluid
import numpy as np
#创建两个张量
x=fluid.layers.data(name='x',
shape=[1],
dtype='float32')
y=fluid.layers.data(name='y',
shape=[1],
dtype='float32')
#张量按元素相加
result=fluid.layers.elementwise_add(x,y)
#创建执行器
place=fluid.CPUPlace()
exe=fluid.Executor(place)
exe.run(fluid.default_startup_program())#初始化系统参数
a=np.array([[1,1,1],[2,2,2]])
b=np.array([[3,3,3],[4,4,4]])
params={"x":a,"y":b}
outs=exe.run(fluid.default_main_program(), #执行默认主程序
feed=params, #喂入数据
fetch_list=[result]) #获取result变量的值
for i in outs:
print(i)
===============================
[[4 4 4]
[6 6 6]]
三.简单线性回归
#简单线性回归
import paddle
import paddle.fluid as fluid
import numpy as np
import matplotlib.pyplot as mp
#1.定义数据
train_data=np.array([[1.0],[2.0],[3.0],[4.0]]).astype("float32")
y_true=np.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")
#2.搭建网络(全连接网络、优化器)
y_predict=fluid.layers.fc(input=x,#输入
size=1,#输出值得个数
act=None)#指定激活的函数
#以均方差作为损失函数
cost=fluid.layers.square_error_cost(input=y_predict,#预测值
label=y) #期望值
avg_cost=fluid.layers.mean(cost) #求均方差
#定义优化器
optimizer=fluid.optimizer.SGD(learning_rate=0.01) #随机梯度下降
#求最小化均方差
optimizer.minimize(avg_cost)
#3.执行训练
place=fluid.CPUPlace
exe=fluid.Executor(place) #执行器
exe.run(fluid.default_startup_program())#初始化系统参数
costs=[] #每一步的损失
iters=[] #迭代的次数
values=[] #预测值
params={"x":train_data,"y":y_true} #真实数据
for i in range(200):
outs=exe.run(fluid.default_main_program(),
feed=params, #喂入数据
fetch_list=[y_predict,avg_cost.name])
iters.append(i) #记录次数 可视化用
values.append(outs[0][0]) #预测值
costs.append(outs[1][0]) #损失值
print(i,":",outs[1][0])#打印每一步的损失值
#4.训练过程可视化
mp.title('Training Cost',fontsize=24) #注意 写figure是报错的
mp.xlabel('Iter',fontsize=14)
mp.ylabel('Cost',fontsize=14)
mp.plot(iters,costs,color="red",label="Training value")
mp.plot(iters,values,color="blue",label="Predict value")
mp.grid(linestyle=":")
mp.legend()
mp.show()
mp.savefig("train.png") #偶尔图片不出来,用save又出来了
部分截图
大概10多20多次基本趋于稳定了,所以后面的次数相当于白做了。