日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

卷积神经网络(三)-ZF-Net和VGG-Nets

發布時間:2023/12/20 卷积神经网络 93 豆豆
生活随笔 收集整理的這篇文章主要介紹了 卷积神经网络(三)-ZF-Net和VGG-Nets 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

卷積神經網絡(一)-LeNet

卷積神經網絡(二)-AlexNet

?卷積神經網絡(三)-ZF-Net和VGG-Nets

卷積神經網絡(四)-GoogLeNet

卷積神經網絡(五)-ResNet

卷積神經網絡(六)-DenseNet


目錄

?

ZF-Net

VGG-Nets


ZF-Net

ZFNet是2013ImageNet分類任務的冠軍,其網絡結構沒什么改進,只是調了調參,性能較Alex提升了不少。ZF-Net只是將AlexNet第一層卷積核由11變成7,步長由4變為2,第3,4,5卷積層轉變為384,384,256。這一年的ImageNet還是比較平靜的一屆,其冠軍ZF-Net的名堂也沒其他屆的經典網絡架構響亮。

?ZF-Net的Keras實現

def ZF_Net():model = Sequential() model.add(Conv2D(96,(7,7),strides=(2,2),input_shape=(224,224,3),padding='valid',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(3,3),strides=(2,2))) model.add(Conv2D(256,(5,5),strides=(2,2),padding='same',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(3,3),strides=(2,2))) model.add(Conv2D(384,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(384,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform')) model.add(MaxPooling2D(pool_size=(3,3),strides=(2,2))) model.add(Flatten()) model.add(Dense(4096,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(4096,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(1000,activation='softmax')) return model

VGG-Nets

VGG-Nets是由牛津大學VGG(Visual Geometry Group)提出,是2014年ImageNet競賽定位任務的第一名和分類任務的第二名的中的基礎網絡。VGG可以看成是加深版本的AlexNet. 都是conv layer + FC layer,在當時看來這是一個非常深的網絡了,因為層數高達十多層,我們從其論文名字就知道了(《Very Deep Convolutional Networks for Large-Scale Visual Recognition》),當然以現在的目光看來VGG真的稱不上是一個very deep的網絡。

上面一個表格是描述的是VGG-Net的網絡結構以及誕生過程。為了解決初始化(權重初始化)等問題,VGG采用的是一種Pre-training的方式,這種方式在經典的神經網絡中經常見得到,就是先訓練一部分小網絡,然后再確保這部分網絡穩定之后,再在這基礎上逐漸加深。表1從左到右體現的就是這個過程,并且當網絡處于D階段的時候,效果是最優的,因此D階段的網絡也就是VGG-16了!E階段得到的網絡就是VGG-19了!VGG-16的16指的是conv+fc的總層數是16,是不包括max pool的層數!

下面這個圖就是VGG-16的網絡結構。

?

由上圖看出,VGG-16的結構非常整潔,深度較AlexNet深得多,里面包含多個conv->conv->max_pool這類的結構,VGG的卷積層都是same的卷積,即卷積過后的輸出圖像的尺寸與輸入是一致的,它的下采樣完全是由max pooling來實現。

VGG網絡后接3個全連接層,filter的個數(卷積后的輸出通道數)從64開始,然后沒接一個pooling后其成倍的增加,128、512,VGG的注意貢獻是使用小尺寸的filter,及有規則的卷積-池化操作。

?閃光點

  • 卷積層使用更小的filter尺寸和間隔

與AlexNet相比,可以看出VGG-Nets的卷積核尺寸還是很小的,比如AlexNet第一層的卷積層用到的卷積核尺寸就是11*11,這是一個很大卷積核了。而反觀VGG-Nets,用到的卷積核的尺寸無非都是1×1和3×3的小卷積核,可以替代大的filter尺寸。

3×3卷積核的優點:

  • 多個3×3的卷基層比一個大尺寸filter卷基層有更多的非線性,使得判決函數更加具有判決性
  • 多個3×3的卷積層比一個大尺寸的filter有更少的參數,假設卷基層的輸入和輸出的特征圖大小相同為C,那么三個3×3的卷積層參數個數3×(3×3×C×C)=27CC;一個7×7的卷積層參數為49CC;所以可以把三個3×3的filter看成是一個7×7filter的分解(中間層有非線性的分解)

1*1卷積核的優點:

  • 作用是在不影響輸入輸出維數的情況下,對輸入進行線性形變,然后通過Relu進行非線性處理,增加網絡的非線性表達能力。

VGG-16的Keras實現:

?

def VGG_16(): model = Sequential()model.add(Conv2D(64,(3,3),strides=(1,1),input_shape=(224,224,3),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(64,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(128,(3,2),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(128,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(256,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(Conv2D(512,(3,3),strides=(1,1),padding='same',activation='relu',kernel_initializer='uniform'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Flatten())model.add(Dense(4096,activation='relu'))model.add(Dropout(0.5))model.add(Dense(4096,activation='relu'))model.add(Dropout(0.5))model.add(Dense(1000,activation='softmax'))return model

?

總結

以上是生活随笔為你收集整理的卷积神经网络(三)-ZF-Net和VGG-Nets的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。