一、卷積層、激活層、池化層
1、激活層
所謂激活,實際上是對卷積層的輸出結果做一次非線性映射。激活函數可以引入非線性因素,解決線性模型所不能解決的問題。[深度學習]人工神經網絡中激勵函數作用詳解
從上圖中可以看到,輸入信息x在神經元內首先經過加權求和,然後通過激活函數的非線性轉換,將數據控制在一定範圍區間內。轉換的結果作爲下一層神經元的輸入,或作爲結果進行輸出。
常見的激勵函數:sigmoid函數、tanh函數、ReLu函數、SoftMax函數、dropout函數等。
2、池化層
所謂池化(欠採樣或下采樣),主要用於特徵降維,壓縮數據和參數的數量,減小過擬合
二、全連接層
CNN 入門講解:什麼是全連接層? - 蔣竺波的文章 - 知乎
1、經過前面若干次卷積+激活+池化
後,終於來到了全連接層(fully connected layers,FC)
其實在全連接層之前,如果神經元數目過大,學習能力強,有可能出現過擬合。
因此,可以引入dropout操作,來隨機刪除神經網絡中的部分神經元,來解決此問題。
2、全連接層,在整個卷積神經網絡中起到“分類器”的作用。
3、如果說卷積層、池化層和激活函數層等操作是將原始數據映射到隱層特徵空間的話,
全連接層則起到將學到的“分佈式特徵表示”映射到樣本標記空間的作用。
三、輸出層
1、最後一層全連接+Softmax
2、linear層:torch.nn.Linear()函數的理解
class torch.nn.Linear(in_features,out_features,bias = True )
對應的線性變換公式如下所示:這裏的A便是那個權重矩陣
Parameter:
in_features
:每個輸入樣本的大小
out_features
: 每個輸出樣本的大小
bias
:如果設置爲False,則圖層不會學習附加偏差。默認值:True
Shape:
Input
: (N,in_features)
Output
:(N,out_features)
weight
: (out_features, in_features)
bias
: (out_features,1)
Example:
m = nn.Linear(20, 30)
input = autograd.Variable(torch.randn(128, 20))
output = m(input)
print(output.size())
在這個案例中,in_features=20
,out_features=30
, N=128
,
因此x(128,20)
;weight(30,20)
;bias(30,1)
,故將weight轉置之後帶入上述線性變換公式有:
(128,20)*(20,30)+(30,1) = (128,30)
,所以,output.size是 (128,30)