★ 歡迎關注我的公衆號【拇指筆記】,本篇文章完整程序可以在後臺回覆"APF"獲得。
1 激活函數
非線性函數是指對隱藏變量使用暗元素運算的非線性函數進行變換,然後再做爲下一個全連接層輸入。這個非線性函數叫做激活函數。
下面介紹幾種常用的激活函數。
1.1 ReLU函數(線性整流函數)
ReLU函數
-
功能: ReLU函數只保留正數元素,並將負數元素清零。
-
定義:
- 函數圖像和導數圖像:
- 繪製程序
%matplotlib inline
import torch
import numpy as np
import matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = x.relu()
y.sum().backward()
z = x.grad
x = x.detach().numpy()
y = y.detach().numpy()
plt.ylim(ymin=-1,ymax=7)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('ReLU(x)')
plt.figure(2)
plt.ylim(ymin=-0.05,ymax=1.05)
plt.xlim(xmin=-8,xmax=8)
plt.plot(x,z)
plt.xlabel('x')
plt.ylabel('grad of ReLU(x)')
1.2 sigmoid函數(S型函數)
sigmoid函數
- 功能: sigmoid函數可以將元素的值變換到0和1之間。
- 定義:
- 函數圖像和導數圖像:
- 繪製程序
%matplotlib inline
import torch
import numpy as np
import matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = x.sigmoid()
y.sum().backward()
z = x.grad
x = x.detach().numpy()
y = y.detach().numpy()
plt.ylim(ymin=-0.1,ymax=1.1)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sigmoid(x)')
plt.figure(2)
plt.ylim(ymin=-0.05,ymax=0.3)
plt.xlim(xmin=-8,xmax=8)
plt.plot(x,z)
plt.xlabel('x')
plt.ylabel('grad of sigmoid(x)')
1.3 tanh函數(雙曲正切函數)
tanh函數
- 功能:可以將元素的值變換到-1和1之間
- 定義:
- 函數圖像和導數圖像
- 繪製程序
%matplotlib inline
import torch
import numpy as np
import matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = x.tanh()
y.sum().backward()
z = x.grad
x = x.detach().numpy()
y = y.detach().numpy()
plt.ylim(ymin=-1.1,ymax=1.1)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('tanh(x)')
plt.figure(2)
plt.ylim(ymin=-0.05,ymax=1.1)
plt.xlim(xmin=-8,xmax=8)
plt.plot(x,z)
plt.xlabel('x')
plt.ylabel('grad of tanh(x)')
寫文不易,有用的話加個關注唄,我的公衆號【拇指筆記】,每天更新我的學習筆記~