基於tensorflow實現的線性迴歸模型

遇到的問題以及解決方案

  1. Question1:對於隨機生成的x,y訓練出來的擬合直線效果不理想。

解決方案:將權重的標準差調整爲0後效果仍然不理想,然後根據線性迴歸的流程,對所有參數設置的一一進行排查,最後將錯誤定位到梯度下降法的步長,起初設置爲0.0001,導致步長太小,使得直線擬合速度太慢,迭代5000步後仍然無法達到理想程度,因此加大步長,加快擬合速度,但步長又不可以太大,會導致最終結果在最佳收斂點附近徘徊。

調整隨機分佈的y的方差的結果:

                      

     圖2:y值方差爲0.1的擬合結果圖

圖3:y值方差爲0.4的擬合結果圖

從上圖分析,改變y的方差值,三點均勻的分佈在直線兩側,則說明擬合的結果較爲不錯。

  1. 調整梯度下降法的步長

         

圖4:步長爲0.01的擬合結果圖

圖5:步長爲0.0001的擬合結果

從上圖分析,步長太小會導致擬合速度變慢。

用tensorboard可視化線性迴歸模型:

                          

圖6:損失值變化曲線圖

由上圖可知,在迭代到700步之前,損失值迅速下降,迭代到600步之後,損失之幾乎沒有變化,呈現一條水平的直線,其值爲0.1856。

                        

                     圖7:線性迴歸數據流圖

                                 圖8:parameters結點中地內部結構圖

由圖7可以清晰地分析出各個結點之間地數據流向,結點表示一個命名空間,直線上的數據表示有多少個張量(數據)從一個結點流向另一個結點。雙擊其中一個結點patameters,如圖8所示,又可以清楚地看到其內部包含兩個變量,分別爲weights和biases。

                                             

                                                               圖9:偏差變化圖

                                               

                圖10:權重變化圖

圖9分析可得,偏差在剛開始迭代時迅速下降,然後又迅速上升,大約迭代到700步之後區域穩定。

圖10分析可得,在迭代到700步之前,權重迅速上升,700步之後趨於平衡,其值大約爲1.40。

                                                  

圖11:偏差直方圖

                          圖12:權重直方圖

經驗與總結

1.模型的優缺點分析

優點:本次實驗實現的是最簡單的一元線性迴歸,實現方式較爲簡單,理解起來較爲容易,適合tensorflow初學者快速入門。

缺點:

  • 線性迴歸模型的實際意義是用於預測,而本實驗是隨機生成的原始數據,沒有實際含義,不可以應用到實際應用問題中。
  • 只設置了一個特徵,不可以預測多特徵的複雜線性迴歸問題,模型過於簡單.
  1. 設計與實現過程中的各種錯誤與解決方法

模型中的相關參數設置:由於是tensorflow初學者,對線性迴歸中的相關參數設置一頭霧水,導致擬合的結果不理想,通過查閱資料以及對線性迴歸模型的深入理解,根據實際模型不斷地去調整參數,最後達到理想結果。

  1. 改進與拓展

根據模型分析的優缺點,可以將單一特徵的線性迴歸模型改進爲多特徵的線性迴歸模型,設置多個權重(w1,w2....)。隨機生成樣本點不具有實際意義,也不利於初學者對線性迴歸模型的深入理解,可以通過具體的例子來理解,比如說可以參考房價預測模型,根據房子的大小,所處區域以及其他特徵建立線性迴歸模型,最後得到的模型,可以用來預測更多其他房子的房價,更具有實際應用價值。

最後附上github鏈接https://github.com/aiyadehaijiao/LinearRegression

以及tensorborad的使用方法:https://blog.csdn.net/lin453701006/article/details/79391088

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章