Pytorch 激活函数

激活函数(activation functions)的目标是,将神经网络非线性化。激活函数是连续的(continuous),且可导的(differential)。

  • 连续的:当输入值发生较小的改变时,输出值也发生较小的改变;
  • 可导的:在定义域中,每一处都是存在导数;

神经网络中比较常用的激活函数有sigmoid、tanh、ReLU,Leaky ReLU、Maxout:

在PyTorch的老版本里这些激活函数在torch.nn.functional下,目前在torch下可以使用。

1. Sigmoid

数据将被映射到0到1之间。

                                                                  

示例代码:

import torch

a = torch.linspace(-100, 100, 10)
print(torch.sigmoid(a))

输出结果:

tensor([0.0000e+00, 1.6655e-34, 7.4564e-25, 3.3382e-15, 1.4945e-05, 9.9999e-01,
        1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00])

2. Tanh

可以由Sigmoid变换得到,数据将被映射到-1到1之间。

                                                 

示例代码:

b = torch.linspace(-1, 1, 10)
print(torch.tanh(b))

输出结果:

tensor([-0.7616, -0.6514, -0.5047, -0.3215, -0.1107,  0.1107,  0.3215,  0.5047,
         0.6514,  0.7616])

3. ReLU

即Rectified Linear Unit,是现在DL用得最多的激活函数。ReLU在输入正信号时保证输出信号的导数是1,避免了当输入过大时引起(前面Sigmoid或者Tanh都会出现的)梯度弥散。

                                                                    

示例代码:

c = torch.linspace(-1, 1, 10)
print(torch.relu_(c))

输出结果:

tensor([0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1111, 0.3333, 0.5556, 0.7778,
        1.0000])

 

你可能感兴趣的:(深度学习,pytorch)