深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

最近刷完了莫煩的tensorflow教程,寫個文章總結一下,流量警告,本文圖多,而且很長。

一、tf.Variable和tensorflow線性迴歸

通過tf.Variable定義weights和bias,進行簡單的線性迴歸


深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖1

二、tf.constant和session

主要學習通過tf.constant定義常量,tf.matmul將兩個tensor相乘,類似於np.dot。還有一點很重要——session,類似於一個指針,可以指向運算,也可以指向變/常量,有兩種使用方法,推薦第二種。

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖2

三、tensor初始化

主要學習了參數初始化,在tensorflow中,進行運算前需要將定義的tensor初始化。

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖3

四、tf.placeholder

placeholder有點類似佔位符,在sess.run需要傳入具體參數時,通過feed_dict,提供一個字典。

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖4

五、激勵函數

激勵函數的作用是給神經網絡提供非線性。有很多函數可以充當激勵函數,例如relu、sigmox、tanh,當然,你也可以自己設計激勵函數,但是,激勵函數必須可微分。一般來說,簡單的神經網絡可以使用任意激勵函數,但是複雜的神經網絡必須精心選擇激活函數,以避免梯度爆炸或梯度消失現象。

六、添加層

主要學習如何定義一個函數表示添加一層神經網絡。


深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖6

七、搭建簡單的神經網絡

主要學習瞭如何搭建一個簡單的神經網絡(一個隱藏層,一個輸出層)。


深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖7、神經網絡搭建部分

八、可視化神經網絡非線性擬合效果

神經網絡的搭建部分和上面一樣,本節主要學習瞭如何可視化神經網絡的非線性擬合效果。

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖8、訓練神經網絡並可視化的部分

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖8、神經網絡可視化效果圖


九、優化器

主流的優化器optimizer分為四種,如圖,目前推薦用Adam


深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖9

十、tensorboard

tensorboard是tensorflow的可視化工具,tensorboard主要有四個功能,查看標量(scalers)、圖(Graph)、參數分佈(Distribution)、參數柱狀圖(Histograms)。主要學習瞭如何用代碼給網絡層和參數命名,然後在Graph中展示。

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖10 tensorboard 功能介紹

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖10 搭建的神經網絡在tensorboard的Graph中的展示

十一、分類學習

本節主要學習通過搭建神經網絡,完成手寫數據集Mnist的分類任務。


深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖11 創建數據集和搭建神經網絡

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖11 訓練和評估精度

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖11 訓練效果還是很不錯的,精度能達到0.87

十二、過擬合

對於分類和迴歸任務,經常會碰到過擬合現象,即神經網絡模型在訓練或驗證集上表現很好,在測試集上表現不如人意。說白了, 就是機器學習模型於自信. 已經到了自負的階段了.。機器學習模型的自負又表現在哪些方面呢. 這裡是一些數據. 如果要你畫一條線來描述這些數據, 大多數人都會這麼畫. 對, 這條線也是我們希望機器也能學出來的一條用來總結這些數據的線. 這時藍線與數據的總誤差可能是10. 可是有時候, 機器過於糾結這誤差值, 他想把誤差減到更小, 來完成他對這一批數據的學習使命. 所以, 他學到的可能會變成這樣 . 它幾乎經過了每一個數據點, 這樣, 誤差值會更小 . 可是誤差越小就真的好嗎? 看來我們的模型還是太天真了. 當我拿這個模型運用在現實中的時候, 他的自負就體現出來. 小二, 來一打現實數據 . 這時, 之前誤差大的藍線誤差基本保持不變 .誤差小的 紅線誤差值突然飆高 , 自負的紅線再也驕傲不起來, 因為他不能成功的表達除了訓練數據以外的其他數據. 這就叫做過擬合Overfitting

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖12 過擬合現象描述

解決方法:

A、增加數據量。過擬合的原因是模型複雜度和數據量不匹配,也就是數據量太小

B、正則化。WW表示要學習的參數,過擬閤中WW往往變化比較大,為了不讓WW變化太大,在原始誤差集上做些改變,即如果WW變化太大,則讓cost的變化也變大。著名的有L1和L2正則化。

C、Dropout。訓練神經網絡時隨機去掉神經網絡節點和網絡連接,從根本上不讓神經網絡過度依賴某些神經元。

十三、Dropout緩解over-fitting

本節主要學習瞭如何在tensorflow搭建神經網絡時添加dropout。Dropout要添加在激勵函數前。


深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖13、準備二分類數據集

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖13、搭建帶有dropout的簡單神經網絡

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖13、訓練和計算精度

我們可以看一下帶有dropout和不帶dropout的訓練效果。其中藍線是訓練損失,橙線是測試損失。

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖13、不帶有dropout的訓練

深度學習/目標檢測之tensorflow——莫煩教程總結(1-13)

圖13、帶有dropout的訓練


分享到:


相關文章: