pytorch中的 relu、sigmoid、tanh、softplus 函式
阿新 • • 發佈:2018-12-08
四種基本激勵函式是需要掌握的:
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() # 生成網格