Tensorflow 2.0 线性回归案例

本文介绍一个简单的线性回归例子:通过一个随机初始点(a1,b1)来拟合y=a*x+ b,
我们要拟合的函数模型:y= 6 * x + 3.68
代码如下:

#导入必要的模块
import tensorflow as tf
import numpy as np
#定义要拟合的函数模型
X =np.random.rand(1000) #随机选择1000个数进行1000次迭代
Y =6*X+3.68

#拟合过程中的初始点(随机选择一个点)
weight=tf.Variable(1.,dtype=tf.float32,name='weight')
bias=tf.Variable(1.,dtype=tf.float32,name='bias')
#定义拟合函数
def model(xs):
    logits=tf.multiply(xs,weight)+bias
    return logits
opt=tf.optimizers.Adam(1e-1) #选择优化器,是一种梯度下降的方法
for xs,ys in zip(X,Y):
    xs=np.reshape(xs,[1]) #将数据reshape为一维张量
    ys=np.reshape(ys,[1])
    #用梯度下降法进行数据迭代
    with tf.GradientTape() as tape:
        _loss=tf.reduce_mean(tf.pow((model(xs)-ys),2))/(2*1000)
        grads=tape.gradient(_loss,[weight,bias])
        opt.apply_gradients(zip(grads,[weight,bias]))
        print('Training loss is:',_loss.numpy())
print(weight)
print(bias)

1000此迭代以后的结果如下:
Tensorflow 2.0 线性回归案例_第1张图片
最后我们看到经过1000次的迭代,得到weight=5.999995和bias=3.6800025,也就是得到的拟合函数为 y =5.999995 * x + 3.6800025, 和实际函数y= 6 * x + 3.68相比误差很小。

你可能感兴趣的:(Tensorflow 2.0 线性回归案例)