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

看板Python作者 (前端攻城師)時間6年前 (2017/09/21 00:46), 6年前編輯推噓20(20031)
留言51則, 12人參與, 最新討論串1/3 (看更多)
各位前輩大大們好<(_ _)> 我使用Google提供的tensorflow, 並且修改網路上提供的範例, 進行類神經網路深度學習的製作, 其實...我只有實驗2層時,算是成功的,但是想要進入深度學習的領域, 增加隱藏層時,出了問題QAQ 使用relu計算隱藏層,sigmoid計算最後結果, 我的數值不知道為甚麼,沒有乖乖的修正,全部都變成1了... 我也有試著全用sigmoid計算,但結果是全部為0, 就算把每層節點數增加到300個,好像也沒有幫助 我試著觀察權重,發現權重好像都沒有更新... 聽說...別人可以做到146層(? 人家怎麼10層就進行不下去了啦TAT 以下是我的程式碼 https://pastebin.com/JZryY82w 貴求各位先進提點我出了甚麼問題,我該如何修正m(_ _)m -- 往昔所造諸罪業 皆由無始貪瞋癡 身語意之所生... 一切,我今皆懺悔! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.157.60 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1505925975.A.AE1.html

09/21 01:15, , 1F
幫你推 我是用 Keras 用 TF 是不是比較厲害?
09/21 01:15, 1F
應該還好吧(////▽////) 主要是在FB上面看到就用了>///<

09/21 01:22, , 2F
一般網路不能疊那麼多層吧 resnet之類的特殊架構才能疊
09/21 01:22, 2F

09/21 01:22, , 3F
到一百多層
09/21 01:22, 3F

09/21 01:26, , 4F
你可以查看看 dying relu problem
09/21 01:26, 4F
有查過,我再多查查

09/21 03:25, , 5F
試試看add layer不要用函數包? 直接寫
09/21 03:25, 5F

09/21 03:26, , 6F
10層會不會要跑很久啊..
09/21 03:26, 6F
我用1050Ti執行GPU運算,10層10w迴圈大約也在3min內,感覺還好

09/21 05:53, , 7F
用leakyrelu試試?解決 relu死掉的現象
09/21 05:53, 7F
有試過,但...沒有效果

09/21 09:36, , 8F
把loss改成logistic跟lr改成decay跑100000epoch可以練
09/21 09:36, 8F

09/21 09:36, , 9F
起來
09/21 09:36, 9F
不是很清楚怎改...我會研究看看! 請問您所說的lr是學習率?不是很清楚如何把我的loss改成logistic... 您說的logistic是指x - x * z + log(1 + exp(-x))嗎?

09/21 10:48, , 10F
goo.gl/t1L7Q3這個loss function,lr是學習率
09/21 10:48, 10F
好的,非常感謝您 <3

09/21 13:09, , 11F
initialize_all_variable 怎麼做的 有用random嗎
09/21 13:09, 11F
這是tf給予的函式,好像沒有random,但程式的其他地應該有對變數進行沒錯

09/21 13:12, , 12F
sigmoid 就是 logistic
09/21 13:12, 12F
謝謝您!

09/21 14:04, , 13F
xavier initializer
09/21 14:04, 13F

09/21 14:05, , 14F
or batch normalization
09/21 14:05, 14F
好的,謝謝您!我會再添加相關設定!

09/21 19:24, , 15F
hidden layer用relu, output layer用softmax....
09/21 19:24, 15F
之前因為沒發現sigmoid跟softmax明顯差距,所以就用sigmoid了,之後會改用softmax, 謝謝您的建議!

09/22 02:00, , 16F
不確定其他的問題,但看到幾點問題: 1.有人會output用
09/22 02:00, 16F

09/22 02:00, , 17F
sigmoid嗎? 如果你是做分類問題,應該用softmax,這兩者功
09/22 02:00, 17F

09/22 02:01, , 18F
用完全不同
09/22 02:01, 18F
之所以會用是因為一開始學習時都是看到sigmoid,也真的有部份教學用sigmoid, 所以不小心就誤用了>"< 謝謝提醒<(_ _)>

09/22 02:01, , 19F
2.如果是新版TF,initialize_all_variabel已經
09/22 02:01, 19F

09/22 02:01, , 20F
不支援了,最好也改掉.
09/22 02:01, 20F
當時找到這個範例最方便套用, 試用也沒有問題,一時沒想到會有版本新舊問題,感謝您!

09/22 02:01, , 21F
3.看起來你對神經網路還很陌生,我
09/22 02:01, 21F

09/22 02:02, , 22F
建議你可以先用Keras實作,而不要一開始就碰TF,你會比較懂
09/22 02:02, 22F

09/22 02:02, , 23F
神經網路的模型,然後你再去搞懂TF,因為看起來你對於怎麼
09/22 02:02, 23F

09/22 02:03, , 24F
搭建神經網路都還不太熟,就被困在TF的語法裡面了.
09/22 02:03, 24F

09/22 02:05, , 25F
最後一提,一般對於多層感知器(就是你在做的事情),增加層
09/22 02:05, 25F

09/22 02:05, , 26F
數到這麼多意義不大,一般一兩層就可以了,但節點可以多一
09/22 02:05, 26F

09/22 02:07, , 27F
些.用太多層,會導致後向傳播時要處理的參數幾何式增長,計
09/22 02:07, 27F
我以前聽教學說雖然沒有一定,但節點數通常為輸入的1.5倍,我實驗原本輸入是8筆 所以就沒想到調節點數了>"< 非常感謝您無私的教導 m(_ _)m

09/22 02:38, , 28F
10層dnn任一條x->y的路徑相當於乘了10次weight, 你的inpu
09/22 02:38, 28F

09/22 02:38, , 29F
t在0.7附近, 初始weights用random normal預設也在 0 附
09/22 02:38, 29F

09/22 02:38, , 30F
近(-1,1), 這樣後面output應該都是0,所以我覺得train不
09/22 02:38, 30F

09/22 02:38, , 31F
出東西來
09/22 02:38, 31F

09/22 02:52, , 32F
所謂疊幾十上百層的是CNN,架構有其原理與作用,也有很多
09/22 02:52, 32F

09/22 02:52, , 33F
不同技巧解決梯度消失的問題。其實最尾巴接上的full-conn
09/22 02:52, 33F

09/22 02:52, , 34F
ected layer與softmax組成的分類器也很少會超過二,三層
09/22 02:52, 34F

09/22 02:52, , 35F
09/22 02:52, 35F

09/22 03:00, , 36F
還有像樓上所說的剛開始建議先玩Keras, 一方面比較方便
09/22 03:00, 36F

09/22 03:00, , 37F
拼接出不同典型model來比較看看,而且TF本身api很亂寫起
09/22 03:00, 37F

09/22 03:00, , 38F
來也較不直覺。
09/22 03:00, 38F
我原本以為...BP會把一切問題都解決的...輸出結果錯誤,所以就把權重修正到合理範圍 ,但沒想到...原來BP好像有個修正的極限(? 其實其實我窩窩當初是想要做成CNN的,但研究一段時間不知道怎寫出來, 而且我要研究資料好像也不合適用CNN,所以才放棄的>////< 因為我當時剛接觸時,手邊資料很亂...我基本上要再3天內實做出基本能跑的DL... 所以工具看到了就用...沒想到有名的Google出的工具這底層, 其實我也是現在才接觸到Keras的,或許我當初早點接觸到,就不會用TF了 >"<

09/22 18:19, , 39F
感覺是層數太深,資料太少,導致gradient沒有變化,可以
09/22 18:19, 39F

09/22 18:19, , 40F
看看Loss有沒有降低~
09/22 18:19, 40F
似乎...沒有降低...我正在研究把Loss改成怎樣好 有位大大幫我做了一些修正,現在問題已解決,謝謝大家的幫助與支持, 接下來我會慢慢吸收這段時間大家提供給我的資訊, 感謝大家m(_ _)m

09/23 15:57, , 41F
期待後續xd 推薦看看Coursera,Andrew大大開的Deep Learn
09/23 15:57, 41F

09/23 15:57, , 42F
ing,看完會更有感覺!
09/23 15:57, 42F
嗯,我英文苦手QAQQQ 不過還是感謝大大給我這個學習的機會 <3 後續嘛~原則上希望不要再有問題了 :P

09/25 02:07, , 43F
好像太晚看到了XD 我猜大概是lr和sdv太高把relu弄死了
09/25 02:07, 43F
是說其實我到現在還不是很清楚lr設多少比較好,要如何判斷... 可用的lr比我逾期的低了100倍以上...

09/25 16:23, , 44F
lr 你設多少? 可以從 1e-5 開始往前走
09/25 16:23, 44F
很想知道設這數值的原因...我目前也是差不多設這數值再修 但以前看教學,0.9都有人設了...說學比較快 我真正參考的範例是0.1,完全無法想像1e-5

09/25 18:58, , 45F
如果你使用標準的微分法 那lr就只能試了 理論上來說
09/25 18:58, 45F

09/25 18:59, , 46F
先大後小比較好 一般我都是從0.01開始 不過牽涉很多因素
09/25 18:59, 46F

09/25 19:00, , 47F
所以用adam比較方便.. 常常也比手動調整好一點
09/25 19:00, 47F
我目前就是使用AdamOptimizer,我也聽說先大後小比較好,但relu一直死掉... 經過版上大大改過,才知道要小到1e-5.... 目前不知道要怎求出學習率, 我只找出一個小規律,就是如果學習率*訓練次數大於1好像會死....

09/26 04:18, , 48F
其實我第一個發現的地方是你沒有觀察cost所以只能猜或
09/26 04:18, 48F

09/26 04:18, , 49F
者找不到錯誤在哪,但是我自己做ml也是慢慢試LR
09/26 04:18, 49F
嗯,謝謝大大提醒! 所以層數,節點數,訓練次數也是自己慢慢試囉Q m(_ _)m

09/27 01:33, , 50F
對於層數 某大牛(好像是Bengio)有說過 你就一直加深
09/27 01:33, 50F

09/27 01:34, , 51F
直到結果不再改善為止XD 所以基本上只能試了
09/27 01:34, 51F
好的,謝謝您!總之就是慢慢觀察結果進行微調了,謝謝 <(_ _)> ※ 編輯: st1009 (1.164.93.71), 09/27/2017 19:51:52
文章代碼(AID): #1PmfjNhX (Python)
文章代碼(AID): #1PmfjNhX (Python)