作者st1009 (前端攻城师)
看板Python
标题[问题] 深度学习(deep learning)出问题
时间Thu Sep 21 00:45:55 2017
各位前辈大大们好<(_ _)>
我使用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://webptt.com/cn.aspx?n=bbs/Python/M.1505925975.A.AE1.html
1F:推 f496328mm: 帮你推 我是用 Keras 用 TF 是不是比较厉害? 09/21 01:15
应该还好吧(////▽////)
主要是在FB上面看到就用了>///<
2F:推 tsoahans: 一般网路不能叠那麽多层吧 resnet之类的特殊架构才能叠 09/21 01:22
3F:→ tsoahans: 到一百多层 09/21 01:22
4F:推 tsoahans: 你可以查看看 dying relu problem 09/21 01:26
有查过,我再多查查
5F:推 KyotoAnime: 试试看add layer不要用函数包? 直接写 09/21 03:25
6F:→ KyotoAnime: 10层会不会要跑很久啊.. 09/21 03:26
我用1050Ti执行GPU运算,10层10w回圈大约也在3min内,感觉还好
7F:推 johnny78615: 用leakyrelu试试?解决 relu死掉的现象 09/21 05:53
有试过,但...没有效果
8F:推 ebullient: 把loss改成logistic跟lr改成decay跑100000epoch可以练 09/21 09:36
9F:→ ebullient: 起来 09/21 09:36
不是很清楚怎改...我会研究看看!
请问您所说的lr是学习率?不是很清楚如何把我的loss改成logistic...
您说的logistic是指x - x * z + log(1 + exp(-x))吗?
10F:推 ebullient: goo.gl/t1L7Q3这个loss function,lr是学习率 09/21 10:48
好的,非常感谢您 <3
11F:推 brightwish: initialize_all_variable 怎麽做的 有用random吗 09/21 13:09
这是tf给予的函式,好像没有random,但程式的其他地应该有对变数进行没错
12F:→ brightwish: sigmoid 就是 logistic 09/21 13:12
谢谢您!
13F:推 joeyccc1: xavier initializer 09/21 14:04
14F:→ joeyccc1: or batch normalization 09/21 14:05
好的,谢谢您!我会再添加相关设定!
15F:推 vfgce: hidden layer用relu, output layer用softmax.... 09/21 19:24
之前因为没发现sigmoid跟softmax明显差距,所以就用sigmoid了,之後会改用softmax,
谢谢您的建议!
16F:→ pipidog: 不确定其他的问题,但看到几点问题: 1.有人会output用 09/22 02:00
17F:→ pipidog: sigmoid吗? 如果你是做分类问题,应该用softmax,这两者功 09/22 02:00
18F:→ pipidog: 用完全不同 09/22 02:01
之所以会用是因为一开始学习时都是看到sigmoid,也真的有部份教学用sigmoid,
所以不小心就误用了>"<
谢谢提醒<(_ _)>
19F:→ pipidog: 2.如果是新版TF,initialize_all_variabel已经09/22 02:01
20F:→ pipidog: 不支援了,最好也改掉. 09/22 02:01
当时找到这个范例最方便套用,
试用也没有问题,一时没想到会有版本新旧问题,感谢您!
21F:→ pipidog: 3.看起来你对神经网路还很陌生,我 09/22 02:01
22F:→ pipidog: 建议你可以先用Keras实作,而不要一开始就碰TF,你会比较懂 09/22 02:02
23F:→ pipidog: 神经网路的模型,然後你再去搞懂TF,因为看起来你对於怎麽 09/22 02:02
24F:→ pipidog: 搭建神经网路都还不太熟,就被困在TF的语法里面了. 09/22 02:03
25F:→ pipidog: 最後一提,一般对於多层感知器(就是你在做的事情),增加层 09/22 02:05
26F:→ pipidog: 数到这麽多意义不大,一般一两层就可以了,但节点可以多一 09/22 02:05
27F:→ pipidog: 些.用太多层,会导致後向传播时要处理的参数几何式增长,计 09/22 02:07
我以前听教学说虽然没有一定,但节点数通常为输入的1.5倍,我实验原本输入是8笔
所以就没想到调节点数了>"<
非常感谢您无私的教导 m(_ _)m
28F:推 kaneson: 10层dnn任一条x->y的路径相当於乘了10次weight, 你的inpu 09/22 02:38
29F:→ kaneson: t在0.7附近, 初始weights用random normal预设也在 0 附 09/22 02:38
30F:→ kaneson: 近(-1,1), 这样後面output应该都是0,所以我觉得train不 09/22 02:38
31F:→ kaneson: 出东西来 09/22 02:38
32F:推 kaneson: 所谓叠几十上百层的是CNN,架构有其原理与作用,也有很多 09/22 02:52
33F:→ kaneson: 不同技巧解决梯度消失的问题。其实最尾巴接上的full-conn 09/22 02:52
34F:→ kaneson: ected layer与softmax组成的分类器也很少会超过二,三层 09/22 02:52
35F:→ kaneson: 。 09/22 02:52
36F:推 kaneson: 还有像楼上所说的刚开始建议先玩Keras, 一方面比较方便 09/22 03:00
37F:→ kaneson: 拼接出不同典型model来比较看看,而且TF本身api很乱写起 09/22 03:00
38F:→ kaneson: 来也较不直觉。 09/22 03:00
我原本以为...BP会把一切问题都解决的...输出结果错误,所以就把权重修正到合理范围
,但没想到...原来BP好像有个修正的极限(?
其实其实我窝窝当初是想要做成CNN的,但研究一段时间不知道怎写出来,
而且我要研究资料好像也不合适用CNN,所以才放弃的>////<
因为我当时刚接触时,手边资料很乱...我基本上要再3天内实做出基本能跑的DL...
所以工具看到了就用...没想到有名的Google出的工具这底层,
其实我也是现在才接触到Keras的,或许我当初早点接触到,就不会用TF了 >"<
39F:推 jack529: 感觉是层数太深,资料太少,导致gradient没有变化,可以 09/22 18:19
40F:→ jack529: 看看Loss有没有降低~ 09/22 18:19
似乎...没有降低...我正在研究把Loss改成怎样好
有位大大帮我做了一些修正,现在问题已解决,谢谢大家的帮助与支持,
接下来我会慢慢吸收这段时间大家提供给我的资讯,
感谢大家m(_ _)m
41F:推 jack529: 期待後续xd 推荐看看Coursera,Andrew大大开的Deep Learn 09/23 15:57
42F:→ jack529: ing,看完会更有感觉! 09/23 15:57
嗯,我英文苦手QAQQQ
不过还是感谢大大给我这个学习的机会 <3
後续嘛~原则上希望不要再有问题了 :P
43F:推 Kazimir: 好像太晚看到了XD 我猜大概是lr和sdv太高把relu弄死了 09/25 02:07
是说其实我到现在还不是很清楚lr设多少比较好,要如何判断...
可用的lr比我逾期的低了100倍以上...
44F:推 f496328mm: lr 你设多少? 可以从 1e-5 开始往前走 09/25 16:23
很想知道设这数值的原因...我目前也是差不多设这数值再修
但以前看教学,0.9都有人设了...说学比较快
我真正参考的范例是0.1,完全无法想像1e-5
45F:推 Kazimir: 如果你使用标准的微分法 那lr就只能试了 理论上来说 09/25 18:58
46F:→ Kazimir: 先大後小比较好 一般我都是从0.01开始 不过牵涉很多因素 09/25 18:59
47F:→ Kazimir: 所以用adam比较方便.. 常常也比手动调整好一点 09/25 19:00
我目前就是使用AdamOptimizer,我也听说先大後小比较好,但relu一直死掉...
经过版上大大改过,才知道要小到1e-5....
目前不知道要怎求出学习率,
我只找出一个小规律,就是如果学习率*训练次数大於1好像会死....
48F:推 joeyccc1: 其实我第一个发现的地方是你没有观察cost所以只能猜或 09/26 04:18
49F:→ joeyccc1: 者找不到错误在哪,但是我自己做ml也是慢慢试LR 09/26 04:18
嗯,谢谢大大提醒!
所以层数,节点数,训练次数也是自己慢慢试罗Q
m(_ _)m
50F:推 Kazimir: 对於层数 某大牛(好像是Bengio)有说过 你就一直加深 09/27 01:33
51F:→ Kazimir: 直到结果不再改善为止XD 所以基本上只能试了 09/27 01:34
好的,谢谢您!总之就是慢慢观察结果进行微调了,谢谢 <(_ _)>
※ 编辑: st1009 (1.164.93.71), 09/27/2017 19:51:52