一、Selu激活函數torch
Selu激活函數是深度學習中常用的激活函數之一,常用於卷積神經網路中,可以使得梯度不會消失或爆炸。在Pytorch中,我們可以使用torch.nn.SELU來使用Selu激活函數。其定義如下:
import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(28 * 28, 256) self.fc2 = nn.Linear(256, 64) self.fc3 = nn.Linear(64, 10) def forward(self, x): x = F.selu(self.fc1(x)) x = F.selu(self.fc2(x)) x = self.fc3(x) return x
二、Selu激活函數的特點
Selu激活函數是一種自適應的激活函數,可以將網路的輸出規範化為一個穩定值。在Selu激活函數中,輸入為負值時激活函數表現為指數函數,而在正值時則表現為線性函數,這種特性可以保持梯度不會消失或爆炸。
Selu激活函數還可以通過自身的歸一化來對輸入數據進行處理,常數$\alpha$和$\lambda$的設定可以讓數據的均值和方差保持為一個常數,這樣可以有效地處理數據的偏態分布問題。
使用Selu激活函數的神經網路可以取得非常好的效果,在圖像分類、語音識別等領域都有廣泛的應用。
三、Selu激活函數torch代碼
我們可以使用以下代碼在pytorch中實現Selu激活函數:
import torch.nn.functional as F def selu(x, alpha=1.67326, scale=1.0507): """ Selu激活函數 """ return scale * ( F.threshold(-alpha*x, -1) + F.elu(x, 1) )
四、Relu激活函數
Relu激活函數是一種常用的激活函數,可以有效地解決梯度消失問題。其定義如下:
$$f(x)=\max(0,x)$$
當$x=0$時,輸出為$x$。
五、Relu激活函數公式
Relu激活函數的公式為:
$$f(x)=\begin{cases}
x, & \text{if } x \geq 0 \\
0, & \text{otherwise}
\end{cases}$$
六、Silu激活函數
Silu激活函數是一種新的激活函數,可以簡單地寫作Sigmoid Linear Unit,其定義如下:
$$f(x)=x\cdot\sigma(x)$$
其中$\sigma(x)$為Sigmoid函數
七、Relu激活函數的作用
Relu激活函數可以解決深度神經網路中的梯度消失問題,使得網路的訓練速度更快、效果更好。Relu激活函數公式簡單,計算速度快,因此被廣泛地應用於卷積神經網路中。
八、Relu激活函數是線性函數
當$x>=0$時,Relu激活函數輸出為$x$,因此可以看作是一種線性函數。而當$x<0$時,Relu激活函數輸出為0,因此在$x<0$時,它是一個非線性函數。
九、Swish激活函數
Swish激活函數是一種目前比較流行的激活函數,其定義如下:
$$f(x)=\frac{x}{1+e^{-\beta x}}$$
其中$\beta$是一個可調的超參數。
Swish激活函數是在Sigmoid激活函數的基礎上發展而來的,可以同時具備Sigmoid和Relu的一些優點,如低頻的平滑可微分性和高頻的非線性性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286196.html