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])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪流之源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值