https://cloud.tencent.com/developer/news/190352網絡
http://playground.tensorflow.org函數
PlayGround是一個在線演示、實驗的神經網絡平臺,是一個入門神經網絡很是直觀的網站。這個圖形化平臺很是強大,將神經網絡的訓練過程直接可視化。同時也能讓咱們對Tensorflow有一個感性的認識。學習
PlayGround頁面如圖所示,主要分爲DATA(數據),FEATURES(特徵),HIDDEN LAYERS(隱含層),OUTPUT(輸出層)。測試
PlayGround主頁面優化
DATA一欄裏提供了4種不一樣形態的數據,分別是圓形、異或、高斯和螺旋。平面內的數據分爲藍色和黃色兩類。網站
四種數據形態3d
咱們的目標就是經過神經網絡將這兩種數據分類,能夠看出螺旋形態的數據分類是難度最高的。除此以外,PlayGround還提供了很是靈活的數據配置,能夠調節噪聲、訓練數據和測試數據的比例和Batch size的大小。blog
噪聲的影響圖片
訓練數據和測試數據的比例入門
Batch size大小
Batch size就是每批進入神經網絡數據點的個數。
FEATURES一欄包含了可供選擇的7種特徵:X一、X二、X1X一、X2X二、X1X二、sin(X1)、sin(X2)。
7種特徵
X1能夠當作以橫座標分佈的數據特徵,X2是以縱座標分佈的數據特徵,X1X1和X2X2是非負的拋物線分佈,X1X2是雙曲拋物面分佈,sin(X1)和sin(X2)正弦分佈。咱們的目標就是經過這些特徵的分佈組合將兩類數據(藍色和黃色)區分開,這就是訓練的目的。
HIDDEN LAYERS一欄可設置多少隱含層。通常來說,隱含層越多,衍生出的特徵類型也就越豐富,對於分類的效果也會越好,但不是越多越好,層數多了訓練的速度會變慢,同時收斂的效果不必定會更好,後面也會提到。
隱含層結構
由於在這裏是一個分類的問題,隱含層設置爲兩層,恰好對應輸出的類型。層與層之間的連線粗細表示權重的絕對值大小,咱們能夠把鼠標放在線上查看權值,也能夠點擊修改。
OUTPUT一欄將輸出的訓練過程直接可視化,經過test loss和training loss來評估模型的好壞。
輸出模型
除了主要的四個部分外,在界面上還有一列控制神經網絡的參數,從左到右分別是,訓練的開關、迭代次數、學習速率、激活函數、正則化、正則化率和問題的類型。
神經網絡控制參數
咱們接下來嘗試了幾個例子,考慮到圖片太多,直接講一些結論,讀者能夠自行去摸索。
首先考慮的是激活函數的影響,比較了一下Sigmoid函數和ReLU函數:
1.選擇Sigmoid函數做爲激活函數,明顯能感受到訓練的時間很長,ReLU函數能大大加快收斂速度,這也是如今大多數神經網絡都採用的激活函數。
2.當把隱含層數加深後,會發現Sigmoid函數做爲激活函數,訓練過程loss降不下來,這是由於Sigmoid函數反向傳播時出現梯度消失的問題(在sigmoid接近飽和區時,變換太緩慢,導數趨於0,這種狀況會形成信息丟失)。
接着咱們選用ReLU函數做爲激活函數,比較一下隱含層數量對結果的影響:
1.咱們選用了3層隱含層,每層特徵個數爲8,8,2的模型和6層隱含層,每層特徵個數爲8,8,8,8,8,2的模型。3層隱含層模型大概200步就達到了test loss爲0.005,training loss爲0.005,而6層隱含層模型跑了700步,test loss爲0.015,training loss爲0.005,有點過擬合。
8,8,2模型
8,8,8,8,8,2模型
隱含層的數量不是越多越好,層數和特徵的個數太多,會形成優化的難度和出現過擬合的現象。
若是你感興趣,不少測試你均可以嘗試一下。經過神經網絡,咱們的系統本身就能學習到哪些特徵是有效的,哪些特徵是無效的,經過本身學習這些特徵,而後判斷問題。值得一提的是,最近很熱的AlphaGo zero經過自我學習的過程,從無到有,戰勝了參照人類知識學習的AlphaGo,可見機器自我學習,自我進化的速度太快了,遠遠超越了人類歷史經驗的總結。人生苦短,快用Tensorflow!
來源:簡書做者:MrLonelyZC88
連接:https://www.jianshu.com/p/5f83defc7615