利用tensorflow解决线性回归问题
1、核心步骤
1)准备数据集
2)创建模型
3)训练模型
4)进行预测
2、实例
本例通过人工生成数据集,由y=2*x+1+一个噪声生成,噪声的最大幅值设为0.5。可以利用该数据集来拟合线性函数:y=2*x+1。
1)创建数据集
%matplotlib inline
#导入响应库
import numpy as n
import tensorflow as tf
import matplotlib.pyplot as p
x_data=n.linspace(-1,1,200)
#对应的y值
y_data=2*x_data+1.0+n.random.randn(*x_data.shape)*0.5
2)构建模型
x=tf.placeholder("float",name="x")
y=tf.placeholder("float",name="y")
#创建变量
w=tf.Variable(1.0,name="w0")
b=tf.Variable(0.0,name="b0")
#创建模型,此时即定义模型函数
def model(x,w,b):
return tf.multiply(x,w)+b
pre=model(x,w,b)
3)训练模型
#设置训练参数
train_num=10
learn_rate=0.03
#定义损失函数,采用MSE作为损失函数
lossfunc=tf.reduce.mean(tf.square(y-pre))
#定义优化器,tensorflow中的优化器已定义了训练参数的更新,无需自定义
optimizer=tf.train.GrandientDescentOptimizer(learn_rate).minimize(lossfunc)
#创建会话
s=tf.Session()
init=tf.global_variables_initalizer()
s.run(init)
#迭代训练
for n in range(train_num):
for x1,y1 in zip(x_data,y_data):
_,loss=s.run([optimizer,lossfunc],feed_dict{x:x1,y:y1})
#显示训练的最佳参数
s.run(w)
s.run(b)
#显示结果图像
plt.scatter(x_data,y_data,label='orign data')
plt.plot(x_data,x_data*s.run(w)+s.run(b),label='learn line',color='r')
s.close()