常用深度學習模型介紹(1)


參考:https://blog.csdn.net/xbinworld/article/details/45619685

參考:https://blog.csdn.net/fate_fjh/article/details/53446630(FCN模型)

參考:https://blog.csdn.net/zyqdragon/article/details/72353420

LeNet模型(包括輸入層在內共有8層):

 模型結構如下:

第一層:輸入層是32x32大小的圖像

第二層:C1層是一個卷積層,6個feature map,5x5大小的卷積核,每個feature map共有(32-5+1)*(32-5+1)即28x28個神經元,每個神經元都與輸入層的5x5大小的區域相連,即C1層有(5x5+1)x6=156個訓練參數(5為卷積核權重,1為bias偏置項權重,共6個feature map),兩層間的連接數為156x(28x28)=122304個,通過卷積運算來強化特征,減少噪音。

第三層:S2是池化層,共6個14x14的feature map,對應的池化大小為2x2,(按照書上的解釋)這里的池化層的計算過程和普通的池化層有點差異,這里采用對上一層卷積層的2x2大小的數值求和得到xi,再經wxi+b計算后進行激活函數處理得到結果,這里的連接數為(4+1)x(14x14)x6=5880。

第四層:C3層是一個卷積層,采用5x5的卷積核,這里的feature map的神經元個數為(14-5+1)x(14-5+1)=10x10,這里有16個feature map,每個feature map由上一層的feature map之間進行不同組合。(現在大部分的卷積層都是和所有的上一層所有的feature map相連接,表現為每個feature map和卷積核內積后求和並加偏置項,得到輸出的單個feature map中對應的數值)

第五層:S4是一個池化層,由16個5x5的feature map組成

第六層:C5是一個卷積層,同樣使用5x5的卷積核,該層有120個feature map

第七層:F6全連接層有84個feature map,每個feature map只有一個神經元與C5全相連,該層計算輸入向量和權重向量間的點積和偏置,然后傳遞給sigmoid函數計算。

第八層:輸出層也是全連接層,共10個節點,分別代表數字0-9

 AlexNet模型:

該模型總共有8層,前五層是卷積層,后三層是全連接層,最后一個全連接層的輸出具有1000個輸出的softmax。

第一個卷積層conv1中,Alexnet采用96個11x11x3的kernel(對應下圖中的num_output),在stride為4的情況下對224x224x3的圖像進行濾波,即通過11x11的卷積模板在3個通道上,間隔為4個像素的采樣頻率對圖像進行卷積操作。

對於每個feature map來說,間隔為4,因此map核大小為(224/4-1)55x55。在得到基本的卷積數據后,通過relu、norm變換、池化操作作為輸出傳遞到下一層。經過池化之后的feature map大小轉化為(55/2)27x27,本層feature map的個數為96個。

 

 

第二個卷積通過256個5x5的卷積模板卷積得到(pad表示周邊的0填充)。過程和第一層的conv1類似,(按照他人博客的意思)這里的group的目的在於將前面的feature map分開,卷積部分分成2部分來做,每組針對27x27x48的像素進行卷積運算。步長為1。其中,池化運算的尺度為3x3,運算步長為2,因而得到池化之后的feature map大小為13x13。     過程作圖表示如下:

 

 第三個卷積層的過程和第二個卷積層類似。這里采用384個卷積模板來進行操作,每個像素層都通過上下左右pad=1來進行填充,這里的2組像素層被送到2個不同的GPU中進行運算,每個GPU有192個卷積核,每個卷積核的尺寸為3x3x128。因此,每個GPU中的

卷積核都可以2組13x13x128的像素層的所有數據進行卷積運算。經計算后,得到2組GPU中總計13x13x384個卷積后的像素層。

第四層的輸入為上一層的輸出(即2組GPU的總計13x13x384的像素層),每個GPU中各有192個卷積核,每個卷積核的尺寸為13x13x192,其余部分同上。

 

第五層的輸入為第四層輸出的2組13x13x192的像素層,同上,這里也分為2個group,每組的卷積核的個數為128,卷積核的尺寸大小為13x13x192,經卷積計算后的卷積核尺寸大小為13x13x128,2組GPU總計13x13x256的卷積核。

經過核大小為3,步長為2的池化層處理后尺寸大小為(13-3)/2+1=6,即得到2組6x6x128的像素層,合計為6x6x256的像素層。

 

第六層為全連接層,這里的輸入數據的尺寸大小為6x6x256,通過6x6x256尺寸的濾波器對輸入數據進行卷積運算,每個6x6x256尺寸的濾波器對第六層的輸入數據進行運算得到1個結果;共有4096個6x6x256尺寸的濾波器對輸入數據進行卷積運算,

通過4096個神經元輸出運算結果。再經relu激活函數得到4096個值,后通過dropout層輸出4096個本層的輸出結果。由於這一層的濾波器尺寸6x6x256和待處理的feature map的6x6x256的尺寸相同,也就是說濾波器的每個系數只和feature map中的一個

系數相乘,因此該層也稱為全連接層。

第七層也為全連接層。第六層的輸出的4096個數據和第七層的4096個神經元進行全連接,后經relu處理、dropout處理,輸出4096個數據。

第七層的4096個數據和第八層的1000個神經元進行全連接,經過訓練后輸出被訓練的數值。

 

其中,Alexnet模型的各層發揮的作用如下表所示:

多GPU訓練:提高訓練速度

 非線性激活函數:使用Relu非線性函數收斂更快,用Relu替代Sigmoid是因為Relu的SGD收斂速度比Sigmoid/tanh快很多,主要原因是Relu是線性的、非飽和的,只需要一個閾值就可以得到激活值。

 dropout:減少過擬合

 LRN局部相應歸一化:有助於模型的泛化

 重疊池化:提高精度、減少過擬合

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM