日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Pytorch学习:Task4 PyTorch激活函数原理和使用

發布時間:2025/4/5 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch学习:Task4 PyTorch激活函数原理和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Pytorch學習:Task4 PyTorch激活函數原理和使用

    • 1.torch.nn.ELU Sigmoid和ReLU結合體,具有左側軟飽和性
    • 2.torch.nn.LeakyReLU
        • 數學表達式:![在這里插入圖片描述](https://img-blog.csdnimg.cn/3f4ad6a53b1f46caa5d1cce3c4c2e334.png)
        • 圖像:
    • 3.torch.nn.PReLU() ReLU和LReLU改進版本
        • 數學表達式:
        • 圖像
    • 4.torch.nn.ReLU() CNN中最常用的
        • 數學表達式:
        • 圖像
        • 優缺點
    • 5.torch.nn.ReLU6()
        • 數學表達式
        • 圖像
    • 6.torch.nn.Sigmoid()
        • 數學表達式
        • 圖像
        • 優缺點
    • 7.torch.nn.Tanh
        • 數學公式:
        • 圖像
        • 優缺點
    • 激活函數的選擇
    • 小練習

參考鏈接1
參考鏈接2

1.torch.nn.ELU Sigmoid和ReLU結合體,具有左側軟飽和性

數學表達式:

圖像:
右側線性部分使得ELU可以緩解梯度消失問題,而左側軟飽和性能讓ELU對輸入變化或噪聲更魯棒。
而且ELU的輸出均值接近于0,所以沒有嚴重的偏移現象,所以收斂速度更快

2.torch.nn.LeakyReLU

數學表達式:

negative_slop是一個超參數,控制x為負數時斜率的角度,默認1e-2

圖像:

3.torch.nn.PReLU() ReLU和LReLU改進版本

數學表達式:

圖像


針對x<0的硬飽和問題,我們對ReLU作出改進,提出Leaky-ReLU,即在x<0部分添加一個參數α,如上圖所示。
P-ReLU則認為α也應當作為一個參數來學習,一般建議α初始化為0.25。

4.torch.nn.ReLU() CNN中最常用的

數學表達式:

圖像

優缺點

優點:
(1)收斂速度比 sigmoid 和 tanh 快;(梯度不會飽和,解決了梯度消失問題)
(2)計算復雜度低,不需要進行指數運算
缺點:
(1)ReLu的輸出不是zero-centered;
(2)Dead ReLU Problem(神經元壞死現象):某些神經元可能永遠不會被激活,導致相應參數不會被更新(在負數部分,梯度為0)。產生這種現象的兩個原因:參數初始化問題;learning rate太高導致在訓練過程中參數更新太大。解決辦法:采用Xavier初始化方法;以及避免將learning rate設置太大或使用adagrad等自動調節learning rate的算法。
(3)ReLu不會對數據做幅度壓縮,所以數據的幅度會隨著模型層數的增加不斷擴張。

5.torch.nn.ReLU6()

數學表達式

圖像

6.torch.nn.Sigmoid()

數學表達式

圖像

優缺點

優點:
(1)便于求導的平滑函數
(2)能壓縮數據,保證數據幅度不會有問題
(3)適合用于前向傳播
缺點:【梯度消失/冪運算耗時】
(1)容易出現梯度消失(gradient vanishing)的現象:當激活函數接近飽和區時,變化太緩慢,導數接近0,根據后向傳遞的數學依據是微積分求導的鏈式法則,當前導數需要之前各層導數的乘積,幾個比較小的數相乘,導數結果很接近0,從而無法完成深層網絡的訓練。
(2)Sigmoid的輸出不是0均值的:這會導致后層的神經元的輸入是非0均值的信號,這會對梯度產生影響。以 f=sigmoid(wx+b)為例, 假設輸入均為正數(或負數),那么對w的導數總是正數(或負數),這樣在反向傳播過程中要么都往正方向更新,要么都往負方向更新,導致有一種捆綁效果,使得收斂緩慢。
(3)冪運算相對耗時

7.torch.nn.Tanh

本質是sigmoid的變型,tanh(x)=2sigmoid(2x)-1

數學公式:



圖像

優缺點

改善:將輸出值映射到了-1到1之間,因此它是0均值的了
缺點:梯度消失和冪運算耗時長

激活函數的選擇

最好不要用sigmoid,tanh也是不適用的,其會導致梯度消失問題。使用relu函數,要小心設置learning rate。還有其他的激活函數,如leaky relu、prelu和maxout等等,可以優先選擇relu,如果出現Dead ReLU Problem,應該使用leaky relu、prelu和maxout。

小練習

在pytorch中手動實現上述激活函數

class ActivateFunction():def __init__(self):passdef relu(self,x):return max(0,x)def relu6(self,x):return min(max(0,x),6)def sigmoid(self,x):return 1/(1+math.exp(-x))def celu(self,x):return max(0,x) + min(0,a*(math.exp(x/a)-1))def logsigmoid(self,x):return math.log(1/(1+math.exp(-x)))def tanh(self,x):return (math.exp(x) - math.exp(-x))/(math.exp(x)+math.exp(-x))def prelu(self,x,a):return max(0,x)+a*min(0,x)def leakyrelu(self,x,negative_slope=1e-2):return max(0,x)+negative_slope*min(0,x)def elu(self,x,a):return max(0,x) + min(0,a*(math.exp(x)-1))def softshrink(x,l):if x>l:return x-lelif x<l:return x+lelse:return 0

總結

以上是生活随笔為你收集整理的Pytorch学习:Task4 PyTorch激活函数原理和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。