[问题] 深度学习(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