例項:構造線性回歸模型
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...