[問題] 深度學習(deep learning)出問題

作者: st1009 (前端攻城師)   2017-09-21 00:45:55
各位前輩大大們好<(_ _)>
我使用Google提供的tensorflow,
並且修改網路上提供的範例,
進行類神經網路深度學習的製作,
其實...我只有實驗2層時,算是成功的,但是想要進入深度學習的領域,
增加隱藏層時,出了問題QAQ
使用relu計算隱藏層,sigmoid計算最後結果,
我的數值不知道為甚麼,沒有乖乖的修正,全部都變成1了...
我也有試著全用sigmoid計算,但結果是全部為0,
就算把每層節點數增加到300個,好像也沒有幫助
我試著觀察權重,發現權重好像都沒有更新...
聽說...別人可以做到146層(?
人家怎麼10層就進行不下去了啦TAT
以下是我的程式碼
https://pastebin.com/JZryY82w
貴求各位先進提點我出了甚麼問題,我該如何修正m(_ _)m
作者: jack529 (Jack)   2017-09-22 18:19:00
感覺是層數太深,資料太少,導致gradient沒有變化,可以看看Loss有沒有降低~
作者: f496328mm (為什麼會流淚)   2017-09-21 01:15:00
幫你推 我是用 Keras 用 TF 是不是比較厲害?
作者: tsoahans (ㄎㄎ)   2017-09-21 01:22:00
一般網路不能疊那麼多層吧 resnet之類的特殊架構才能疊到一百多層你可以查看看 dying relu problem
作者: KyotoAnime (京アニ)   2017-09-21 03:25:00
試試看add layer不要用函數包? 直接寫10層會不會要跑很久啊..
作者: johnny78615 (Johnny)   2017-09-21 05:53:00
用leakyrelu試試?解決 relu死掉的現象
作者: ebullient (逃避雖可恥但有用)   2017-09-21 09:36:00
把loss改成logistic跟lr改成decay跑100000epoch可以練起來goo.gl/t1L7Q3這個loss function,lr是學習率
作者: brightwish (密碼同帳號)   2017-09-21 13:09:00
initialize_all_variable 怎麼做的 有用random嗎sigmoid 就是 logistic
作者: joeyccc1 (Joey)   2017-09-21 14:04:00
xavier initializeror batch normalization
作者: vfgce (小兵)   2017-09-21 19:24:00
hidden layer用relu, output layer用softmax....
作者: pipidog (如果狗狗飛上天)   2017-09-22 02:00:00
不確定其他的問題,但看到幾點問題: 1.有人會output用sigmoid嗎? 如果你是做分類問題,應該用softmax,這兩者功用完全不同,2.如果是新版TF,initialize_all_variabel已經不支援了,最好也改掉. 3.看起來你對神經網路還很陌生,我建議你可以先用Keras實作,而不要一開始就碰TF,你會比較懂神經網路的模型,然後你再去搞懂TF,因為看起來你對於怎麼搭建神經網路都還不太熟,就被困在TF的語法裡面了.最後一提,一般對於多層感知器(就是你在做的事情),增加層數到這麼多意義不大,一般一兩層就可以了,但節點可以多一些.用太多層,會導致後向傳播時要處理的參數幾何式增長,計
作者: kaneson (Lance)   2017-09-22 02:38:00
10層dnn任一條x->y的路徑相當於乘了10次weight, 你的input在0.7附近, 初始weights用random normal預設也在 0 附近(-1,1), 這樣後面output應該都是0,所以我覺得train不出東西來所謂疊幾十上百層的是CNN,架構有其原理與作用,也有很多不同技巧解決梯度消失的問題。其實最尾巴接上的full-connected layer與softmax組成的分類器也很少會超過二,三層。還有像樓上所說的剛開始建議先玩Keras, 一方面比較方便拼接出不同典型model來比較看看,而且TF本身api很亂寫起來也較不直覺。
作者: Kazimir (Kazimir)   2017-09-25 02:07:00
好像太晚看到了XD 我猜大概是lr和sdv太高把relu弄死了
作者: f496328mm (為什麼會流淚)   2017-09-25 16:23:00
lr 你設多少? 可以從 1e-5 開始往前走
作者: Kazimir (Kazimir)   2017-09-25 18:58:00
如果你使用標準的微分法 那lr就只能試了 理論上來說先大後小比較好 一般我都是從0.01開始 不過牽涉很多因素所以用adam比較方便.. 常常也比手動調整好一點
作者: joeyccc1 (Joey)   2017-09-26 04:18:00
其實我第一個發現的地方是你沒有觀察cost所以只能猜或者找不到錯誤在哪,但是我自己做ml也是慢慢試LR
作者: Kazimir (Kazimir)   2017-09-27 01:33:00
對於層數 某大牛(好像是Bengio)有說過 你就一直加深直到結果不再改善為止XD 所以基本上只能試了

Links booklink

Contact Us: admin [ a t ] ucptt.com