经典网络AlexNet介绍
AlexNet經典網絡由Alex Krizhevsky、Hinton等人在2012年提出,發表在NIPS,論文名為《ImageNet Classification with Deep Convolutional Neural Networks》,論文見:http://www.cs.toronto.edu/~hinton/absps/imagenet.pdf ,論文中的網絡結構截圖如下:
上圖中有時看起來不是很直觀,下圖是來自https://www.learnopencv.com/understanding-alexnet/ 中的截圖:
注意:論文中原始輸入大小為224*224*3,上圖中輸入大小為227*227*3,使用227*227替換為224*224更有意義。
AlexNet網絡:
(1).激活函數使用ReLU替代Tanh或Sigmoid加快訓練速度,解決網絡較深時梯度彌散問題。關于ReLU介紹參考:https://blog.csdn.net/fengbingchun/article/details/73872828
(2).訓練時使用Dropout隨機忽略一部分神經元,以避免過擬合。關于Dropout介紹參考:https://blog.csdn.net/fengbingchun/article/details/89286485
(3).使用重疊最大池化(Overlapping Max Pooling),避免平均池化時的模糊化效果;并且讓步長比池化核的尺寸小,提升特征豐富性。filter的步長stride小于filter的width或height。一般,kernel(filter)的寬和高是相同的,深度(depth)是和通道數相同的。
(4).使用LRN對局部神經元的活動創建競爭機制,使得其中響應比較大的值變得相對更大,并抑制其它反饋較小的神經元,增強了模型泛化能力。LRN只對數據相鄰區域做歸一化處理,不改變數據的大小和維度。關于LRN介紹參考:https://blog.csdn.net/fengbingchun/article/details/112393884
(5).數據擴充(Data Augmentation):訓練時隨機地從256*256的原始數據中截取227*227大小的區域,水平翻轉;光照變換。增加了數據量,大大減少過擬合,提升泛化能力。
(6).多GPU并行運算。
AlexNet輸入是一種屬于1000種不同類別的一張BGR圖像,大小為227*227,輸出是一個向量,大小為1000。輸出向量的第i個元素值被解釋為輸入圖像屬于第i類的概率。因此,輸出向量的所有元素的總和為1。
假如輸入圖像大小為n*n,過濾器(filter)為f*f,padding為p,步長(stride)為s,則輸出大小為:如果商不是整數,向下取整,即floor函數。參考:https://blog.csdn.net/fengbingchun/article/details/80262495
AlexNet架構:5個卷積層(Convolution、ReLU、LRN、Pooling)+3個全連接層(InnerProduct、ReLU、Dropout),predict時對各層進行說明:參照https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/deploy.prototxt
(1).輸入層(Input):圖像大小227*227*3。如果輸入的是灰度圖,它需要將灰度圖轉換為BGR圖。訓練圖大小需要為256*256,否則需要進行縮放,然后從256*256中隨機剪切生成227*227大小的圖像作為輸入層的輸入。
(2).卷積層1+ReLU+LRN:使用96個11*11的filter,stride為4,padding為0,輸出為55*55*96,96個feature maps,訓練參數(11*11*3*96)+96=34944。
(3).最大池化層:filter為3*3,stride為2,padding為0,輸出為27*27*96,96個feature maps。
(4).卷積層2+ReLU+LRN:使用256個5*5的filter,stride為1,padding為2,輸出為27*27*256,256個feature maps,訓練參數(5*5*96*256)+256=614656。
(5).最大池化層:filter為3*3,stride為2,padding為0,輸出為13*13*256,256個feature maps。
(6).卷積層3+ReLU:使用384個3*3的filter,stride為1,padding為1,輸出為13*13*384,384個feature maps,訓練參數(3*3*256*384)+384=885120。
(7).卷積層4+ReLU:使用384個3*3的filter,stride為1,padding為1,輸出為13*13*384,384個feature maps,訓練參數(3*3*384*384)+384=1327488。
(8).卷積層5+ReLU:使用256個3*3的filter,stride為1,padding為1,輸出為13*13*256,256個feature maps,訓練參數(3*3*384*256)+256=884992。
(9).最大池化層:filter為3*3,stride為2,padding為0,輸出為6*6*256,256個feature maps。
(10).全連接層1+ReLU+Dropout:有4096個神經元,訓練參數(6*6*256)*4096=37748736。
(11).全連接層2+ReLU+Dropout:有4096個神經元,訓練參數4096*4096=16777216。
(12).全連接層3:有1000個神經元,訓練參數4096*1000=4096000。
(13).輸出層(Softmax):輸出識別結果,看它究竟是1000個可能類別中的哪一個。
train(https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/train_val.prototxt)可視化結果(http://ethereon.github.io/netscope/quickstart.html )如下:
predict可視化結果如下:
GitHub:https://github.com/fengbingchun/NN_Test
總結
以上是生活随笔為你收集整理的经典网络AlexNet介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度神经网络中的局部响应归一化LRN简介
- 下一篇: 经典网络VGGNet介绍