1. 程式人生 > >pytorch中的 relu、sigmoid、tanh、softplus 函式

pytorch中的 relu、sigmoid、tanh、softplus 函式

 四種基本激勵函式是需要掌握的:

1.relu 

線性整流函式(Rectified Linear Unit, ReLU),又稱修正線性單元, 是一種人工神經網路中常用的啟用函式(activation function),通常指代以斜坡函式及其變種為代表的非線性函式。通常意義下,線性整流函式代指代數學中的斜坡函式,即

而在神經網路中,線性整流函式作為神經元的啟用函式,定義了該神經元線上性變換  之後的的非線性輸出結果。換言之,對於進入神經元的來自上一層神經網路的輸入向量  ,使用線性整流啟用函式的神經元會輸出

至下一層神經元或作為整個神經網路的輸出(取決現神經元在網路結構中所處位置)

2.sigmoid

Sigmoid函式是一個在生物學中常見的S型函式,也稱為S型生長曲線。 [1]  在資訊科學中,由於其單增以及反函式單增等性質,Sigmoid函式常被用作神經網路的閾值函式,將變數對映到0,1之間。

Sigmoid函式由下列公式定義

3.tanh函式

函式:y=tanh x;定義域:R,值域:(-1,1)。y=tanh x是一個奇函式,其函式影象為過原點並且穿越Ⅰ、Ⅲ象限的嚴格單調遞增曲線,其影象被限制在兩水平漸近線y=1和y=-1之間。

4.softplus函式

  https://blog.csdn.net/bqw18744018044/article/details/81193241

就是relu函式的平滑版本。


import torch
import torch.nn.functional as F
from torch.autograd import Variable
import matplotlib.pyplot as plt

# fake data
x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(100, 1)
x = Variable(x)
x_np = x.data.numpy()   # numpy array for plotting

# following are popular activation functions
y_relu = torch.relu(x).data.numpy()
y_sigmoid = torch.sigmoid(x).data.numpy()
y_tanh = torch.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy() # there's no softplus in torch
# y_softmax = torch.softmax(x, dim=0).data.numpy() softmax is a special kind of activation function, it is about probability

# plt to visualize these activation function
plt.figure(1, figsize=(8, 6))#橫座標與縱座標
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))#設定縱座標的範圍
plt.legend(loc='best')

plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')

plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')

plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')

plt.show()

plt.grid()  # 生成網格