cxhzy
import tensorflow as tf
import matplotlib.pylab as plt
import numpy as np

# 调用数据
boston_house = tf.keras.datasets.boston_housing
(train_x, train_y), (test_x, test_y) = boston_house.load_data(test_split=0.1)
room_num = train_x[:, 5]                # 房间数
price = train_y                         # 标记值
w = tf.Variable(np.random.randn())      # 系数W
b = tf.Variable(np.random.randn())      # 偏置b
iter = 1000                             # 迭代次数
learn_rate = 0.0001                     # 学习率
loss_list = []                          #   存放loss值
for i in range(iter):
    with tf.GradientTape() as tape:
        price_pre = w * room_num + b
        loss = pow(tf.reduce_mean(price - price_pre), 2) / 2
    dloss_dw, dloss_db = tape.gradient(loss, [w, b])                #   求偏导
    w.assign_sub(learn_rate * dloss_dw)                             #   更新参数w
    w.assign_sub(learn_rate * dloss_db)
    if i % 100 == 0:
        print(\'i:\', i)
        print(\'loss:{},w:{}\'.format(loss, w))
        loss_list.append(loss)

plt.rcParams["font.family"] = \'SimHei\'              # 将字体改为中文
plt.rcParams[\'axes.unicode_minus\'] = False          # 设置了中文字体默认后,坐标的"-"号无法显示,设置这个参数就可以避免
plt.subplot(221)
plt.plot(loss_list, label=\'训练集损失值\')
plt.legend()

plt.subplot(223)
test_room = test_x[:,5]
pre_y = w * test_room+ b
plt.plot(test_room, pre_y, label=\'预测线\')
plt.scatter(test_room ,test_y,s = 2)
plt.legend()
plt.show()

 

分类:

技术点:

相关文章:

  • 2021-09-01
  • 2021-10-15
  • 2021-11-02
  • 2022-01-09
  • 2021-12-29
  • 2021-11-02
  • 2021-10-15
  • 2021-07-20
猜你喜欢
  • 2021-10-15
  • 2021-11-02
  • 2022-01-07
  • 2021-10-15
  • 2021-10-15
  • 2021-05-30
  • 2021-12-19
相关资源
相似解决方案