实例:波士顿房价数据集一元线性回归
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#加载数据集
boston_housing = tf.keras.datasets.boston_housing
(train_x,train_y),(test_x,test_y)=boston_housing.load_data()
#数据处理
x_train = train_x[:,5]
y_train = train_y
x_test = test_x[:,5]
y_test = test_y
#设置超参数
learn_rate = 0.04
iter = 2000
display_step = 200
#设置模型参数初始值
np.random.seed(4)
w = tf.Variable(np.random.randn())
b = tf.Variable(np.random.randn())
#训练模型
mse_train = []
mse_test =[]
for i in range(0,iter+1):
with tf.GradientTape() as tape:
pred_train = w*x_train+b
loss_train = 0.5*tf.reduce_mean(tf.square(y_train-pred_train))
pred_test = w*x_test+b
loss_test = 0.5*tf.reduce_mean(tf.square(y_test-pred_test))
mse_train.append(loss_train)
mse_test.append(loss_test)
dL_dW,dL_db =tape.gradient(loss_train,[w,b])
w.assign_sub(learn_rate*dL_dW)
b.assign_sub(learn_rate*dL_db)
if i %display_step == 0:
print("i:%i,Train Loss:%f,Test Loss:%f"%(i,loss_train,loss_test))
#结果可视化
plt.figure(figsize=(15,10))
plt.subplot(221)
plt.scatter(x_train,y_train,color = "blue",label = "data")
plt.plot(x_train,pred_train,color ="red" ,label = "model" )
plt.legend(loc = "upper left")
plt.subplot(222)
plt.plot(mse_train,co