啟用函式(activity_function)存在的原因是我們日常解決的實際問題大部分不是線性可分的,而是非線性的,此時就需要啟用函式來處理這一分類問題。y = wx+b
是線性分類問題,啟用函式則通過y = af(wx+b)
將線性問題轉換為非線性問題。
常用的啟用函式有relu函式、sigmoid函式、tanh函式等
當神經網路的層數較少是啟用函式的選取影響不會很大,而當網路層數較多時,啟用函式的選取會有較大的影響。
# 申明該**來自於莫煩python
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) 取-5到5之間200個數
x = variable(x)
x_np = x.data.numpy() # numpy array for plotting
# following are popular activation functions,下列**中的.data.numpy()是為了畫圖而轉化為numpy的形式
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()
作圖結果如下:
Pytorch中的啟用函式
介紹神經網路的時候已經說到,神經元會對化學物質的刺激進行,當達到一定程度的時候,神經元才會興奮,並向其他神經元傳送資訊。神經網路中的啟用函式就是用來判斷我們所計算的資訊是否達到了往後面傳輸的條件。因為如果使用線性的啟用函式,那麼input跟output之間的關係始終為線性的,這樣完全可以不使用網路結...
pytorch 學習筆記(三) 激勵函式
學習自 莫煩python 一句話概括 activation 就是讓神經網路可以描述非線性問題的步驟,是神經網路變得更強大 1.啟用函式是用來加入非線性因素的,解決線性模型所不能解決的問題。2.激勵函式要考慮到線性所收到的約束條件,也就是掰彎線性函式 3.它其實就是另外乙個非線性函式.比如說relu,...
pytorch 學習筆記(三)
import torch from torchvision import transforms from torchvision import datasets from torch.utils.data import dataloader import torch.nn.functional as...