pytorch中实现了大部分激活函数,你也可以自定义激活函数,激活函数的实现在torch.nn.functional中,每个激活函数都对应激活模块类,但最终还是调用torch.nn.functional,看了定义,你也能自定义激活函数,我们从最早的激活函数来看
sigmoiddef sigmoid(input):
r"""sigmoid(input) -> Tensor
Applies the element-wise function :math:`\text{Sigmoid}(x) = \frac{1}{1 + \exp(-x)}`
See :class:`~torch.nn.Sigmoid` for more details.
"""
warnings.warn("nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.") return input.sigmoid()
Sigmoid
源码显示这个激活函数直接调用tensor.sigmoid函数,值域在[0,1]之间,也就是把数据的所有值都压缩在[0,1]之间,映射概率不错,如果作为激活函数有如下缺点神经元容易饱和,其值不在[-5, 5]之间,梯度基本为0,导致权重更新非常缓慢
值域中心不是0,相当于舍弃负值部分
计算有点小贵,毕竟每次都算两个exp,一定要做内存和计算的葛朗台
tanhdef tanh(input):
r