Q: 深度学习中激活函数在不连续可导时的导数怎么处理呢?
A: 激活函数不要求处处连续可导,在不连续可导处定义好该处的导数即可。
sigmoid函数是处处连续可导的。其他如ReLU,在0处不连续可导。实际上激活函数用ReLU的情况很多。
在caffe中,给定输入x, ReLU层可以表述为:
f(x) = x, if x>0;
f(x) = negative_slope * x, if x <=0.
当negative_slop>0时,ReLU是leaky ReLU. negative_slope默认为0, 即标准ReLU。
如下图代码所示,Backward_cpu中bottom_data(即输入x)=0时,导数为negative_slope。
不连续可导处的导数值取derivative(x+)还是derivative(x-),不同框架如pytorch, caffe, tensorflow可能各有选择。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。