Pytorch中的激活函数及其梯度是如何定义和计算的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计635个文字,预计阅读时间需要3分钟。
sigmoid函数曲线平滑,可良好使用。但若数据长时间不更新,会出现失掉梯度的现象。
1sigmoid函数sigmoid函数曲线平滑可以很好的使用但是如果数据长时间不更新会出现失去梯度的1sigmoid函数
sigmoid函数曲线平滑可以很好的使用但是如果数据长时间不更新会出现失去梯度的状况也叫梯度弥散。
求sigmoid函数的梯度
当然我们可以使用pytorch实现sigmoid函数。代码如下。
import torchatorch.linspace(-100,100,10)torch.sigmoid(a)得到结果为tensor([0.0000e00, 1.6655e-34, 7.4564e-25, 3.3382e-15, 1.4945e-05, 9.9999e-01,1.0000e00, 1.0000e00, 1.0000e00, 1.0000e00])
2Tanh函数
可以将Tanh函数视为sigmoid函数的一种线性变化所以同样存在梯度弥散的现象。
其梯度为
对于Tanh函数我们也可以通过代码实现
import torchbtorch.linspace(-1,1,10)torch.tanh(b)tensor([-0.7616, -0.6514, -0.5047, -0.3215, -0.1107, 0.1107, 0.3215, 0.5047,0.6514, 0.7616])
为了消除梯度弥散现象我们推出了Relu激活函数。
3Relu函数
relu函数在z>0的时候梯度恒为1。
本文共计635个文字,预计阅读时间需要3分钟。
sigmoid函数曲线平滑,可良好使用。但若数据长时间不更新,会出现失掉梯度的现象。
1sigmoid函数sigmoid函数曲线平滑可以很好的使用但是如果数据长时间不更新会出现失去梯度的1sigmoid函数
sigmoid函数曲线平滑可以很好的使用但是如果数据长时间不更新会出现失去梯度的状况也叫梯度弥散。
求sigmoid函数的梯度
当然我们可以使用pytorch实现sigmoid函数。代码如下。
import torchatorch.linspace(-100,100,10)torch.sigmoid(a)得到结果为tensor([0.0000e00, 1.6655e-34, 7.4564e-25, 3.3382e-15, 1.4945e-05, 9.9999e-01,1.0000e00, 1.0000e00, 1.0000e00, 1.0000e00])
2Tanh函数
可以将Tanh函数视为sigmoid函数的一种线性变化所以同样存在梯度弥散的现象。
其梯度为
对于Tanh函数我们也可以通过代码实现
import torchbtorch.linspace(-1,1,10)torch.tanh(b)tensor([-0.7616, -0.6514, -0.5047, -0.3215, -0.1107, 0.1107, 0.3215, 0.5047,0.6514, 0.7616])
为了消除梯度弥散现象我们推出了Relu激活函数。
3Relu函数
relu函数在z>0的时候梯度恒为1。

