05.16 「入門實戰」TensorFlow做線性迴歸的完整步驟「附代碼」

深度學習最火的框架之一:TensorFlow,如何找到一個入門的突破口呢?本文通過一篇TensorFlow實戰,總結如何用 TensorFlow 做線性迴歸,主要步驟如下。有了這些基礎後,為我們今後開展更復雜的應用TensorFlow解決圖像處理,自然語言處理,行為預測等打下基礎。

藉助tensorflow如何實現最小二乘法的線性迴歸呢?基本的思路,首先生成擬合的數據集,然後構建線性迴歸的Graph,最後在Session中迭代train器,得到擬合的參數w和b,畫出擬合曲線。

1.1 生成擬合的數據集

數據集只含有一個特徵,注意誤差項需要滿足高斯分佈,其分佈的代碼如下,首先導入3個庫,

import numpy as np

import tensorflow as tf

import matplotlib.pyplot as plt

#數據點100個

num_points = 100

vectors_set = []

for i in range(num_points):

x1 = np.random.normal(0.,0.55)

y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0,0.03)

vectors_set.append([x1,y1])

#特徵x

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

#標籤值y

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

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

plt.show()

產生的數據分佈如下所示:

「入門實戰」TensorFlow做線性迴歸的完整步驟「附代碼」

1.2 構建線性迴歸的Graph

w = tf.Variable(tf.random_uniform([1],-1.,1.),name='myw')

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

#經過計算得出預估值

y = w * x_data + b

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

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

#採用梯度下降法來優化參數

optimizer = tf.train.GradientDescentOptimizer(0.5)

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

1.3 在Session中運行構建好的Graph

#global_variables_initializer初始化Variable等變量

sess = tf.Session()

init = tf.global_variables_initializer()

sess.run(init)

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

#迭代20次train

for step in range(20):

sess.run(train)

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

#寫入磁盤,提供tensorboard在瀏覽器中展示用

writer = tf.summary.FileWriter("./mytmp",sess.graph)

打印下w和b,損失值的變化情況,可以看到損失值從0.24降到0.0008.

「入門實戰」TensorFlow做線性迴歸的完整步驟「附代碼」

1.4繪製擬合曲線

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

plt.plot(x_data,sess.run(w)*x_data+sess.run(b))

plt.show()

「入門實戰」TensorFlow做線性迴歸的完整步驟「附代碼」

02

Tensorboard展示Graph

關於如何在tensorboard中展示構建好的Graph,請參考文章,不再贅述,直接分析tensorflow繪製的graph.

得到的Graph界面如下所示:

「入門實戰」TensorFlow做線性迴歸的完整步驟「附代碼」

Main Graph視圖放大版,數據從底部是如何經過Operators,流動到頂部的,大家可以順一下。

「入門實戰」TensorFlow做線性迴歸的完整步驟「附代碼」

以上就是在tensorflow中做基本的線性迴歸的基本步驟,利用這個最基本的任務,先體會下tensorflow做迴歸的過程。


分享到:


相關文章: