tensorflow入門 1 構造線性回歸模型

2022-01-29 22:25:54 字數 3109 閱讀 2953

今天讓我們一起來學習如何用tf實現線性回歸模型。所謂線性回歸模型就是y = w * x + b的形式的表示式擬合的模型。

我們先假設一條直線為 y = 0.1x + 0.3,即w = 0.1,b = 0.3,然後利用隨機數在這條直線附近產生1000個隨機點,然後利用tensorflow構造的線性模型去學習,最後對比模型所得的w和b與真實值的差距即可。

(某天在瀏覽github的時候,發現了乙個好東西,github上有乙個比較好的有關tensorflow的demo合集

,有注釋有源**非常適合新手入門。)

import numpy as np     #numpy庫可用來儲存和處理大型矩陣

import tensorflow as tf

import matplotlib.pyplot as plt    #主要用於畫圖

#產生1000個隨機點

num_points = 1000

x_data = [v[0] for v in vectors_set]

y_data = [v[1] for v in vectors_set]

plt.scatter(x_data, y_data, c = 'r')

plt.show()

#生成1維的w矩陣,取值為【-1,1】之間的隨機數

w = tf.variable(tf.random_uniform([1], -1.0, 1.0), name = 'w')

#生成1維的b矩陣,初始值為0

b = tf.variable(tf.zeros([1]), name = 'b')

#經過計算得出預估值y

y = w * x_data + b

#以預估值y和實際值y_data之間的均方誤差作為損失

loss = tf.reduce_mean(tf.square(y - y_data), name = 'loss')

#採用梯度下降法進行優化引數(梯度下降原理詳情見另一篇部落格)

#optimizer = tf.train.gradientdescentoptimizera(0.5).minimize(loss)

optimizer = tf.train.gradientdescentoptimizer(0.5)

#訓練的過程就是最小化這個誤差值

train = optimizer.minimize(loss, name = 'train')

sess = tf.session()

init = tf.global_variables_initializer()

sess.run(init)

#列印初始化的w和b的值

print('w = ', sess.run(w), 'b = ', sess.run(b), "loss = ", sess.run(loss))

#因為資料規模不大且符合正態分佈,所以執行20次訓練就能達到一定效果

for step in range(20):

sess.run(train)

#輸出訓練後的w和b

print('w = ', sess.run(w), 'b = ', sess.run(b), "loss = ", sess.run(loss))

實驗結果如下:

1.1000個散點圖

2.**出w、b以及loss的值

w = [0.40727448] b = [0.] loss = 0.12212546

w = [0.30741683] b = [0.30278787] loss = 0.014318982

w = [0.24240384] b = [0.3016729] loss = 0.0071945195

w = [0.19786316] b = [0.30094698] loss = 0.0038506198

w = [0.16734858] b = [0.30044967] loss = 0.0022811447

w = [0.1464432] b = [0.30010894] loss = 0.001544504

w = [0.13212104] b = [0.29987553] loss = 0.0011987583

w = [0.122309] b = [0.2997156] loss = 0.0010364805

w = [0.11558682] b = [0.29960606] loss = 0.00096031476

w = [0.11098149] b = [0.29953098] loss = 0.0009245659

w = [0.1078264] b = [0.29947957] loss = 0.00090778706

w = [0.10566486] b = [0.29944435] loss = 0.00089991186

w = [0.10418401] b = [0.2994202] loss = 0.0008962157

w = [0.10316949] b = [0.29940367] loss = 0.0008944806

w = [0.10247444] b = [0.29939234] loss = 0.00089366647

w = [0.10199826] b = [0.2993846] loss = 0.00089328433

w = [0.10167204] b = [0.29937926] loss = 0.0008931049

w = [0.10144854] b = [0.29937562] loss = 0.00089302065

w = [0.10129543] b = [0.29937312] loss = 0.00089298113

w = [0.10119054] b = [0.29937142] loss = 0.0008929627

w = [0.10111867] b = [0.29937026] loss = 0.000892954

根據實驗結果可以看出第20次**出的w和b值基本符合我們之前假設直線的值

tensorflow入門筆記(1)

計算圖 tf.graph 張量 tf.tensor 會話 tf.session 計算圖的每乙個節點都是乙個運算,計算圖的邊則表示了運算之間的傳遞關係。張量是乙個多維陣列,主要儲存三個屬性 名字 維度 型別 型別一旦定義不能改變 在張量中並沒有真正儲存數字,它儲存的是如何得到這些數字的計算過程。a t...

TensorFlow入門教程(1)

一 tensorflow的結構 如上圖,tensorflow由tensor operation session variable等組成,其中tensor表示資料,operation表示操作 例如加減乘除 所有的流程圖graph都由session來啟動,variable表示變數。上面的流程圖表示,首先...

TensorFlow學習筆記1 入門

tensorflow運算的本質是有狀態的資料流式圖。tensorflow的直譯是 流動的張量 簡單的有向圖示例如圖 其 表示為 import tensorflow as tf b tf.variable tf.zeros 100 生成100維的向量,初始化為0 w tf.variable tf.ra...