激活函数,也叫激励函数,对于神经网络模型学习、理解复杂数据,具有十分重要的作用。让神经网络可以描述非线性问题的步骤,使神经网络变得更强大。通俗解释,激活函数的作用就是使重要的信息被激励,不重要或者反向的信息被抑制。

Pytorch中的激活函数

Pytorch中的激活函数有很多, 不过我们平时要用到的就这几个:relu, sigmoid, tanh, softplus。

1、定义x变量

import torch
x = torch.linspace(-5, 5, 100)

2、调用激活函数

import torch.nn.functional as F
y_relu = F.relu(x)
y_sigmoid = F.sigmoid(x)
y_tanh = F.tanh(x)
y_softplus = F.softplus(x)

3、画图显示

from matplotlib import pyplot as plt
for i, y in enumerate([y_relu, y_sigmoid, y_tanh, y_softplus]):
    plt.subplot('22'+str(i+1))
    plt.plot(x, y, c='r')
plt.show()

优缺点

1、ReLU函数

优点:收敛速度快,不会梯度消失,计算复杂度低。

缺点:会出现神经元坏死现象,某些神经元可能永远不会被激活。不会对数据进行压缩,数值会不断放大。

2、Sigmoid函数

Sigmoid函数是传统的神经网络和深度学习领域开始时使用频率最高的激活函数。

优点:连续,且平滑便于求导。

缺点:容易出现梯度消失,均值不为0,收敛速度慢,幂运算相对耗时。

3、tanh函数

tanh函数将输入值压缩到 -1~1 的范围,因此它是0均值的,解决了Sigmoid函数的非zero-centered问题,但是它也存在梯度消失和幂运算的问题。

更多函数可以参考官方文档:

https://pytorch.org/docs/stable/nn.functional.html

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/read/237