您好,登錄后才能下訂單哦!
小編給大家分享一下alexnet網絡結構指的是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
第一層卷積層1,卷積核的數量為96;第二層卷積層2,卷積的個數為256個;第三層卷積3, 輸入為第二層的輸出,卷積核個數為384;第四層卷積4,輸入為第三層的輸出,卷積核個數為384;第五層卷積5, 輸入為第四層的輸出,卷積核個數為256。
本教程操作環境:windows7系統、Dell G3電腦。
AlexNet網絡,是2012年ImageNet競賽冠軍獲得者Hinton和他的學生Alex Krizhevsky設計的。在那年之后,更多的更深的神經網路被提出,比如優秀的vgg,GoogleLeNet。其官方提供的數據模型,準確率達到57.1%,top 1-5 達到80.2%. 這項對于傳統的機器學習分類算法而言,已經相當的出色.
網絡結構解析
上圖所示是caffe中alexnet的網絡結構,采用是兩臺GPU服務器,所有會看到兩個流程圖。AlexNet的網絡模型解讀如下表:
解讀如下:
第一層:卷積層1,輸入為 224×224×3 224 \times 224 \times 3224×224×3的圖像,卷積核的數量為96,論文中兩片GPU分別計算48個核; 卷積核的大小為 11×11×3 11 \times 11 \times 311×11×3; stride = 4, stride表示的是步長, pad = 0, 表示不擴充邊緣;卷積后的圖形大小是怎樣的呢? wide = (224 + 2 * padding - kernel_size) / stride + 1 = 54height = (224 + 2 * padding - kernel_size) / stride + 1 = 54dimention = 96然后進行 (Local Response Normalized), 后面跟著池化pool_size = (3, 3), stride = 2, pad = 0 最終獲得第一層卷積的feature map最終第一層卷積的輸出為 第二層:卷積層2, 輸入為上一層卷積的feature map, 卷積的個數為256個,論文中的兩個GPU分別有128個卷積核。卷積核的大小為:5×5×48 5 \times 5 \times 485×5×48; pad = 2, stride = 1; 然后做 LRN, 最后 max_pooling, pool_size = (3, 3), stride = 2; 第三層:卷積3, 輸入為第二層的輸出,卷積核個數為384, kernel_size = (3×3×256 3 \times 3 \times 2563×3×256), padding = 1, 第三層沒有做LRN和Pool 第四層:卷積4, 輸入為第三層的輸出,卷積核個數為384, kernel_size = (3×3 3 \times 33×3), padding = 1, 和第三層一樣,沒有LRN和Pool 第五層:卷積5, 輸入為第四層的輸出,卷積核個數為256, kernel_size = (3×3 3 \times 33×3), padding = 1。然后直接進行max_pooling, pool_size = (3, 3), stride = 2;第6,7,8層是全連接層,每一層的神經元的個數為4096,最終輸出softmax為1000,因為上面介紹過,ImageNet這個比賽的分類個數為1000。全連接層中使用了RELU和Dropout。
用caffe 自帶的繪圖工具(caffe/python/draw_net.py) 和caffe/models/bvlc_alexnet/目錄下面的train_val.prototxt繪制的網絡結構圖如下圖:
python3 draw_net.py --rankdir TB ../models/bvlc_alexnet/train_val.prototxt AlexNet_structure.jpg
算法創新點
(1)成功使用ReLU作為CNN的激活函數,并驗證其效果在較深的網絡超過了Sigmoid,成功解決了Sigmoid在網絡較深時的梯度彌散問題。雖然ReLU激活函數在很久之前就被提出了,但是直到AlexNet的出現才將其發揚光大。
(2)訓練時使用Dropout隨機忽略一部分神經元,以避免模型過擬合。Dropout雖有單獨的論文論述,但是AlexNet將其實用化,通過實踐證實了它的效果。在AlexNet中主要是最后幾個全連接層使用了Dropout。
(3)在CNN中使用重疊的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出讓步長比池化核的尺寸小,這樣池化層的輸出之間會有重疊和覆蓋,提升了特征的豐富性。
(4)提出了LRN層,對局部神經元的活動創建競爭機制,使得其中響應比較大的值變得相對更大,并抑制其他反饋較小的神經元,增強了模型的泛化能力。
(5)多GPU訓練,可以增大網絡訓練規模.
(6)百萬級ImageNet數據圖像輸入.在AlexNet用到的Data Augmentation方式有三種:
平移變換(crop);
反射變換(flip);
光照和彩色變換(color jittering):先對圖片進行隨機平移,然后水平翻轉.測試時,先對左上,右上,左下,右下和中間做5次平移變換,然后翻轉之后對結果求平均.
歸納總結為:
使用ReLU激活函數;
提出Dropout防止過擬合;
使用數據擴充增強數據集(Data augmentation);
水平翻轉圖像、隨機裁剪、平移變換、顏色變換、光照變換等
使用多GPU進行訓練;
將上層的結果按照通道維度拆分為2份,分別送入2個GPU,如上一層輸出的27×27×96的像素層(被分成兩組27×27×48的像素層放在兩個不同GPU中進行運算);
LRN局部歸一化的使用;
使用重疊池化(3*3的池化核)。
Caffe框架下訓練
準備數據集,修改Alexnet網絡的train.prototxt,配置solver,deploy.prototxt文件,新建train.sh腳本,即可開始訓練。
以上是“alexnet網絡結構指的是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。