1. 程式人生 > >TensorFlow實現線性迴歸

TensorFlow實現線性迴歸



開啟微信掃一掃,關注微信公眾號【資料與演算法聯盟】

轉載請註明出處:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer

TensorFlow寫簡單的程式碼是大財小用,需要很繁瑣的程式碼方能實現簡單的功能,但對於複雜的機器學習演算法和深度神經網路卻是十分的簡單,下邊看一個tf實現線性迴歸的Demo

首先引入tf包的相關的package,並初始化100個點。這裡我們假定線性迴歸中的w為0.1 b為0.3,並設定一個隨機數保證在y=0.1X + 0.3 上下浮動。

# coding: utf-8
'''
create by: Thinkgamer
create time: 2018/04/22
desc: 使用tensorflow建立線性迴歸模型
'''
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

# 隨機生成100個點
num_points = 100
vectors_set = list()
for i in range(num_points):
    x1 = np.random.normal(0.00,00.55)
    y1 = x1* 0.1 + 0.3 + np.random.normal(0.0
,0.03) vectors_set.append([x1,y1]) # 生成一些樣本 x_data = [v[0] for v in vectors_set] y_data = [v[1] for v in vectors_set] # print(x_data) # print(y_data) plt.scatter(x_data,y_data,c='r') plt.show()

生成的圖如下所示:
這裡寫圖片描述

用剛才生成的資料進行線性迴歸擬合

# 構造線性迴歸模型

# 生成一維的W矩陣,取值是[-1,1]之間的隨機數
W = tf.Variable(tf.random_uniform([1
],-1,1),name='W') # 生成一維的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.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)) for step in range(20): sess.run(train) # 打印出每次訓練後的w和b print("第 %s 步: W = " % step,sess.run(W), "b= ",sess.run(b)) # 展示 plt.scatter(x_data,y_data,c='r') plt.plot(x_data,sess.run(W)*x_data+sess.run(b),c='b') plt.show()

對應的輸出結果為:

初始化值:  W =  [-0.300848] b=  [0.]
第 0 步:  W =  [-0.17744449] b=  [0.3065566]
第 1 步:  W =  [-0.09421768] b=  [0.30550653]
第 2 步:  W =  [-0.03631891] b=  [0.3047983]
第 3 步:  W =  [0.0039596] b=  [0.3043056]
第 4 步:  W =  [0.0319802] b=  [0.3039629]
第 5 步:  W =  [0.05147332] b=  [0.30372444]
第 6 步:  W =  [0.06503413] b=  [0.30355856]
第 7 步:  W =  [0.07446799] b=  [0.30344316]
第 8 步:  W =  [0.08103085] b=  [0.30336288]
第 9 步:  W =  [0.08559645] b=  [0.30330706]
第 10 步:  W =  [0.0887726] b=  [0.3032682]
第 11 步:  W =  [0.09098216] b=  [0.30324116]
第 12 步:  W =  [0.09251929] b=  [0.30322236]
第 13 步:  W =  [0.09358863] b=  [0.30320928]
第 14 步:  W =  [0.09433253] b=  [0.3032002]
第 15 步:  W =  [0.09485004] b=  [0.30319384]
第 16 步:  W =  [0.09521006] b=  [0.30318946]
第 17 步:  W =  [0.09546052] b=  [0.3031864]
第 18 步:  W =  [0.09563475] b=  [0.30318424]
第 19 步:  W =  [0.09575596] b=  [0.30318278]

生成的圖如下:
這裡寫圖片描述



開啟微信掃一掃,加入資料與演算法交流大群