卷首語:對于上次詳談CNN的文章,我看到很多負面評論。哎呀我滴個小心臟,不甘心的我也請了我的老友(軟件工程專業(yè))作為讀者對上一篇文章進行了評判,只見他猛地將一口老白干咽下,眼神迷離的看向遠方緩緩吐出一個字“懵”……

于此,我也進行了及其深刻的反思,本著寫文章應對讀者負責,在盡量提高質(zhì)量的同時,一定一定要再降低一些門檻(門檻??在作者的鍵盤下是不存在的!)
本文范圍:
???? AlexNet-8案例分析與實現(xiàn)
閱前須知:
???? 本文分析方面會站在兩個GPU通道的基礎上進行分析講解,代碼實現(xiàn)采用單GPU進行模擬傳播,代碼中的參數(shù)并非最優(yōu),請讀者適當加以思考進行改進
AlexNet:
簡介:2012年ImageNet圖像識別大賽冠軍,可以說是許多后續(xù)DCNN模型開發(fā)的參照范例

??? 如上圖,我們可以看出該模型分為上下兩組通道同時卷積處理。沒錯,AlexNet的作者利用兩臺GPU服務器對其進行模型訓練。
模型分析:
??????? 上圖所示,本模型的深度為八層:五層卷積,三層全連接。
可能產(chǎn)生誤解的關(guān)鍵詞:
通道:深度
LRN:局部相應歸一化
卷積類
(在卷積類這里,因為卷積核在兩個GPU通道上的工作原理基本一樣,所以我會只寫一個通道的例子)
Layer-1:

輸入:長*寬*色深(224*224*3)
卷積:長*寬*通道*步長(11*11*96*4),這里的卷積結(jié)果被一分為二,后續(xù)將會在兩個獨立的GPU上進行同步操作
激活函數(shù):ReLU
池化:最大池化長*寬*步長(3*3*2)
備注:添加LRN
輸出:長*寬*通道(27*27*96),且分為兩組,每組分別為(27*27*48)
TensorFlow代碼實現(xiàn):

Layer-2:

輸入:長*寬*通道(27*27*48)
卷積:長*寬*通道*步長(5*5*128*1),且采用全零填充,兩個GPU進行同步卷積
激活函數(shù):ReLU
池化:最大池化長*寬*步長(3*3*2)
備注:添加LRN
輸出:長*寬*通道(13*13*128)
TensorFlow代碼實現(xiàn):

Layer-3:

輸入:長*寬*通道(13*13*128)
卷積:長*寬*通道*步長(3*3*192*1),且采用全零填充,兩個GPU進行同步卷積,輸出結(jié)果交叉運算
激活函數(shù):ReLU
輸出:長*寬*通道(13*13*192)
TensorFlow代碼實現(xiàn):

Layer-4:

輸入:長*寬*通道(13*13*192)
卷積:長*寬*通道*步長(3*3*192*1),且采用全零填充,兩個GPU進行同步卷積
激活函數(shù):ReLU
輸出:長*寬*通道(13*13*192)
TensorFlow代碼實現(xiàn):

Layer-5:

輸入:長*寬*通道(13*13*192)
卷積:長*寬*通道*步長(3*3*128*1),且采用全零填充,兩個GPU進行同步卷積
激活函數(shù):ReLU
池化:最大池化長*寬*步長(3*3*2)
輸出:長*寬*通道(6*6*128)

全連接層
Layer-6:

輸入:將特征矩陣拉成一維的List,且分為兩組,(6*6*256)/2=4096
全連接層:shape = (4096,2048),兩組GPU同步計算
激活函數(shù):ReLU
備注:添加dropout
輸出:節(jié)點*通道(2048*2)
TensorFlow代碼實現(xiàn):

Layer-7:

輸入:兩組2048的節(jié)點參數(shù)
全連接層:shape = (2048,2048),兩組GPU同步計算
激活函數(shù):ReLU
備注:添加dropout
輸出:節(jié)點*通道(2048*2)
TensorFlow代碼實現(xiàn):

Layer-8:

輸入:兩組2048的節(jié)點參數(shù)在通道上進行拼接,組成4096的節(jié)點參數(shù)
全連接層:shape = (4096,1000),則一GPU進行計算即可
備注:最后一層采用softmax
輸出:經(jīng)softmax后的答案,1000種
TensorFlow代碼實現(xiàn):

卷尾語:
至此,我們的經(jīng)典模型AlexNet-8的分析就結(jié)束了,眾所周知卷積網(wǎng)絡與全連接網(wǎng)絡相比最大的優(yōu)勢就是權(quán)值共享導致的參數(shù)量大幅度降低,但本模型的參
數(shù)量依舊很龐大。雖然Paper的作者是使用的兩個GPU進行運算的,但是我們完全可以用TensorFlow或Keras進行一個GPU甚至CPU進行
模擬,當然CPU的速度要慢的很多。
???????? AlexNet現(xiàn)在大多都做為教學上的一種經(jīng)典案例,輝煌的時代基本上已經(jīng)過去了。不過,我們現(xiàn)在仍會在VGG等仍在使用的模型中看到他的影子,可以說留給后人的影響是非常巨大的。
???????? 最后,歡迎大家在下方評論中提出一些改進性的意見或者建議,我會逐漸的完善自己的寫作風格,盡量讓大家都能看懂,都能學會,都能說出一句:這小子寫的還蠻不賴的!
(未完待續(xù))
注:本文原創(chuàng),已售與“昂鈦客AI”