tanh和relu的区别
来源:1-9 Google_cloud_gpu_tensorflow配置
慕斯1347104
2020-01-02
我在学习的过程中发现有时用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,是一个有用的技巧,但不是严格的约定。
012020-01-14
相似问题