话不多说,直接上代码
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
cont=2000
input_x = np.random.rand(cont)
rand_x = np.random.rand(cont)#干扰项
input_y = 5 * input_x + 0.227 + rand_x
weight = tf.Variable(1.0, dtype=tf.float32, name="weight")
bias = tf.Variable(1.0, dtype=tf.float32, name="bias")
#绘制出原始数据
plt.scatter(input_x, input_y)
plt.show()
def model(x):
y = tf.multiply(x, weight) + bias
return y
opt = tf.optimizers.Adam(1e-1)
for xs, ys in zip(input_x, input_y):
xs = np.reshape(xs, [1])
ys = np.reshape(ys, [1])
loss = lambda: tf.losses.MeanSquaredError()(model(xs), ys)
opt.minimize(loss, [weight, bias])
print(loss().numpy())
print(weight)
print(bias)
#作图,显示线性回归的结果
plt.plot(input_x, input_y, 'b', label='Real data') #真实值的散点
plt.plot(input_x, input_x*weight + bias, 'r', label='Predicted data') #预测值的拟合线条
plt.legend()
plt.show()