请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

tanh和relu的区别

我在学习的过程中发现有时用keras训练时候会出现每次迭代正确率都在0.01左右,loss为nan的情况,网上说这种现象叫做梯度爆炸,并给出了一点建议“如果数据集是图片,那么得转化为float 也就是/255,同时relu和softmax两层不要连着用,最好将relu改成tanh,”。我试验后发现确实有效果,所以我就想问问这个tanh和relu的区别是什么?

正在回答

1回答

其实你试试把learning rate调成0.001也可以收敛。

relu和tanh的区别在于计算方式不同:

tanh是一个输出为[-1, 1]的单调递增函数,可以参考,https://baike.baidu.com/item/%E5%8F%8C%E6%9B%B2%E6%AD%A3%E5%88%87/3194837?fromtitle=tanh&fromid=19711736

relu就是负数输出0,正数原值输出的函数,https://zh.wikipedia.org/wiki/%E7%BA%BF%E6%80%A7%E6%95%B4%E6%B5%81%E5%87%BD%E6%95%B0

relu的优势是计算快,tanh中需要计算指数,会慢,但是输出的均值是0, 比较有利于梯度的回传。

至于softmax前不要用relu,是一个有用的技巧,但不是严格的约定。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕斯1347104 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-01-14 17:02:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信