激活函数σ:


1.Sigmoid/logistic 区间[0, 1]

求导:

a=torch.linspace(-100,100,10)
torch.sigmoid(a)
原始a:![]()
sigmoid后:![]()
缺陷:当x->+∞时,σ'=0,导致参数θ=θ-lr*θ'得不到更新,也就是梯度离散问题。
2.Tanh 区间[-1, 1]

求导:

a=torch.linspace(-1,1,10)
torch.tanh(a)
tanh后:![]()
3.Relu(常用***)



from torch.nn import functional as F
a=torch.linspace(-1,1,10)
F.relu(a) #等同于torch.relu(a)
relu后:![]()
4.softmax
用于处理分类问题,总概率和相加为1。
softmax函数:
,
。
求导分为i=j和i≠j:



F.softmax(a, dim=0)

//p.backword(),torch把梯度信息保存在W.grad后会把该图的梯度信息清除掉,需要设置retain_graph = True才能二次调用backward。
//grad or backward传入的feature只能为一个量,例如p是一个[3]的量,所以不能传[p],需要传p[1]。

本文深入探讨了常见的激活函数,包括Sigmoid、Tanh、ReLU及Softmax的特性与应用。解析了每种函数的工作原理,求导过程,以及它们在神经网络训练中可能遇到的问题,如梯度消失和爆炸。
1316

被折叠的 条评论
为什么被折叠?



