您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Tensorflow2.0中的回歸問題怎么分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
在現實生活中,連續值預測問題是非常常見的,比如股價的走勢預測、天氣預報中溫
度和濕度等的預測、年齡的預測、交通流量的預測等。對于預測值是連續的實數范圍,或
者屬于某一段連續的實數區間,我們把這種問題稱為回歸(Regression)問題。特別地,如果使用線性模型去逼近真實模型,那么我們把這一類方法叫做線性回歸(Linear Regression,簡稱 LR)
下面舉例一個簡單的線性回歸問題
從指定的w=1.477, b=0.089的真實模型y=1.477*x+0.0889中直接采樣數據。
import tensorflow as tfimport numpy as np# 1.采集數據data = [] # 保存樣本集的列表for i in range(100): # 循環采樣100個點x = np.random.uniform(-10., 10.) # 從[-10,10]的均勻分布中隨機采樣一個數eps = np.random.normal(0., 0.1) # 從均值為0.1,方差為0.1^2的高斯分布中隨機采樣噪聲y = 1.477*x+0.089+eps # 得到模擬的輸出data.append([x, y]) # 保存樣本點data = np.array(data) # 轉換為2D Numpy數組# 2.計算誤差def mse(b, w, points): # 根據當前輪的w,b參數,計算均方差損失totalError = 0for i in range(0, len(points)): # 循環迭代所有點x = points[i, 0] # 獲得第i個點的橫坐標xy = points[i, 1] # 獲得第i個點的縱坐標ytotalError += (y-(w*x+b))**2 # 計算累計誤差return totalError/float(len(points)) # 得到均方差# 3.計算梯度def step_gradient(b_current, w_current, points, learning_rate):b_gradient = 0w_gradient = 0M = float(len(points)) # 總樣本數for i in range(0, len(points)):x = points[i, 0]y = points[i, 1]b_gradient += (2/M) * ((w_current * x + b_current) - y) # 誤差函數對b的導數w_gradient += (2/M) * x * ((w_current * x + b_current) - y) # 誤差函數對w的導數# 根據梯度下降法算法更新w,bnew_b = b_current - (learning_rate * b_gradient)new_w = w_current - (learning_rate * w_gradient)return [new_b, new_w]# 4.梯度更新def gradient_descent(points, starting_b, starting_w, learning_rate, epos):b = starting_b # 初始化bw = starting_wfor step in range(epos):b, w = step_gradient(b, w, np.array(points), learning_rate)loss = mse(b, w, points)if step % 50 == 0:print('epos', step, ':loss', loss, '; w', w, '; b', b) # 每50epos打印一遍return { b, w}def main():lr = 0.01init_b = 0init_w = 0epos = 10000[b, w] = gradient_descent(data, init_b, init_w, lr, epos)loss = mse(b, w, data)print('Final loss:', loss, ' w:', w, ' b:', b)return 0if __name__ == "__main__":main()
訓練結果:
從訓練結果可以發現,通過建立的線性模型訓練出來的w,b已經很接近真實模型了
關于Tensorflow2.0中的回歸問題怎么分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。