TensorFlow構造簡單的線性回歸模型

2021-08-21 20:07:07 字數 1099 閱讀 3212

例項:構造線性回歸模型

x = np.float32(np.random.normal(8, 10, [1,100]))//生成1行100列的隨機資料矩陣

y = 0.5*x + 1.2 + np.random.normal(0, 0.01)//計算對應的y值

w = tf.variable(tf.zeros([1,1]))//初始化訓練的w

b = tf.variable(tf.zeros([1]))//初始化訓練的b

loss = tf.reduce_mean(tf.square(pre_y - y));//構造損失函式:均方誤差

opt = tf.train.gradientdescentoptimizer(0.005)//使用優化方法:梯度下降優化

res = opt.minimize(loss)//使用優化方法:梯度下降法

with tf.session() as sess:

sess.run(tf.global_variables_initializer())

for step in range(0, 2001)://執行2001次訓練,2001是為輸出好看,可以輸出第2000次迭代

sess.run(res)//開始執行整個訓練邏輯

if step % 200 == 0:

y__ = tf.matmul(w, x) + b//每200次迭代計算一次當前的輸出y__和原始輸出y對比

plt.scatter(x, y, c='r')

plt.scatter(x, sess.run(y__), c='g')

plt.show()

print(step,":", sess.run(w), sess.run(b))

在修改上面**中各個引數的時候,發現了很多有趣的現象:

1)驗證了正態分佈:x用正態分佈產生,均值是8,方差決定了x在8周圍取值的聚集程度

2)y的公式和x的均值,影響了梯度下降學習率,上面**中實際斜率0.5,如果學習率太高,比如預設的0.5,會無法收斂,所以上面用了0.005

3)準備測試資料時,要注意w*x和b的差值,開始的時候我把x取均值0,方差0.1,結果b主導了y值,導致結果無法收斂

TensorFlow簡單介紹

tensorflow簡單介紹 tensorflow中文社群 中文社群中是這個介紹的 tensorflow tensorflow是乙個採用資料流圖 data flow graphs 用於數值計算的開源軟體庫。節點 nodes 在圖中表示數學操作,圖中的線 edges 則表示在節點間相互聯絡的多維資料陣...

tensorflow 簡單例項1

import tensorflow as tf import numpy as np create data x data np.random.rand 100 astype np.float32 y data 0.5 x data 1.3 tensorflow中的變數,這些變數在每次sess迭代時...

tensorflow學習04 構造線性回歸模型

在學完前幾天的tensorflow基本變數定義和矩陣定義,今天我學習了tensorflow的構造線性回歸模型 構造資料並呼叫matplotlib進行顯示 源 匯入numpy tensorflow matplotlib import numpy as np import tensorflow as t...