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回答

正十七

2020-01-02

其实你试试把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
1
慕斯1347104
非常感谢!
2020-01-14
共1条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程