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

2021-09-24 02:02:52 字數 2131 閱讀 9458

遇到的問題以及解決方案

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

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

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

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

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

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

調整梯度下降法的步長

圖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初學者快速入門。

缺點:設計與實現過程中的各種錯誤與解決方法

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

改進與拓展

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

最後附上github鏈結

以及tensorborad的使用方法:

tensorflow實現基於LSTM的文字分類方法

學習一段時間的tensor flow之後,想找個專案試試手,然後想起了之前在看theano教程中的乙個文字分類的例項,這個星期就用tensorflow實現了一下,感覺和之前使用的theano還是有很大的區別,有必要總結mark一下 這個分類的模型其實也是很簡單,主要就是乙個單層的lstm模型,當然也...

基於tensorflow實現線性回歸

1.1 回歸分析 回歸分析是一種 性的建模技術,它研究的是因變數 目標 和自變數 器 之間的關係。這種技術通常用於 分析,時間序列模型以及發現變數之間的因果關係。通常使用曲線 線來擬合資料點,目標是使曲線到資料點的距離差異最小 1.2 線性回歸 在統計學中,線性回歸 linear regressio...

基於Tensorflow的Keras安裝

平台 ubuntu14.04 版本 python3.5,anaconda3 4.1.1,tensorflow1.4.0 bash anaconda sh 檔名 步驟2 回到剛開啟命令框時的目錄,依此輸入 mkdir pip cd pip vim pipconfig 然後會彈出一些配置 拉到最下面,點...