深度学习之基于Tensorflow2.0实现AlexNet网络
生活随笔
收集整理的這篇文章主要介紹了
深度学习之基于Tensorflow2.0实现AlexNet网络
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在之前的實驗中,一直是自己搭建或者是遷移學習進行物體識別,但是沒有對某一個網絡進行詳細的研究,正好人工智能課需要按組上去展示成果,借此機會實現一下比較經典的網絡,為以后的研究學習打下基礎。本次基于Tensorflow2.0實現AlexNet網絡。
1.AlexNet 網絡簡介
作為LeNet網絡提出后的第一個比較成熟的網絡,AlexNet不負眾望的在2012年的ImageNet比賽中以遠超第二名的成績奪冠,使得卷積神經網絡廣受關注,它相比于VGG系列的網絡,層數并不多,而且也沒有Xception和Inception等網絡比較精巧的設計,但是卻是后面網絡的基礎,在深度學習領域具有重要的意義。
2.網絡結構
AlexNet網絡結構如下所示:
更為具體的網絡結構:
3.創新點
AlexNet網絡相比于之前的LeNet網絡,更能提取圖片的特征,主要得益于以下幾點創新:
① 使用了更深的網絡結構。
② 使用卷積層+卷積層+池化層的網絡結構來提取圖像特征。
③ 使用數據增強以及Dropout來抑制過擬合現象。
④ 使用Relu作為激活函數,替換之前的sigmoid函數。
⑤ 使用多GPU進行訓練。
⑥ 使用LRN(局部響應歸一化)進行泛化。
4.網絡實現
def AlexNet(nb_classes,input_shape):input_ten = Input(shape=input_shape)#1x = tf.keras.layers.Conv2D(filters=96,kernel_size=(11,11),strides=(4,4),activation='relu')(input_ten)x = BatchNormalization()(x)##利用BN代替LRNx = MaxPooling2D(pool_size=(3,3),strides=2)(x)#2x = tf.keras.layers.Conv2D(filters=256,kernel_size=(5,5),strides=(1,1),activation='relu',padding='same')(x)x = BatchNormalization()(x)x = MaxPooling2D(pool_size=(3,3),strides=2)(x)#3x = tf.keras.layers.Conv2D(filters=384,kernel_size=(3,3),strides=(1,1),activation='relu',padding='same')(x)#4x = tf.keras.layers.Conv2D(filters=384,kernel_size=(3,3),strides=(1,1),activation='relu',padding='same')(x)#5x = tf.keras.layers.Conv2D(filters=256,kernel_size=(3,3),strides=(1,1),activation='relu',padding='same')(x)x = MaxPooling2D(pool_size=(3,3),strides=2)(x)#FCx = tf.keras.layers.Flatten()(x)x = Dense(4096,activation='relu')(x)x = tf.keras.layers.Dropout(0.5)(x)x = Dense(4096,activation='relu')(x)x = tf.keras.layers.Dropout(0.5)(x)output_ten = tf.keras.layers.Dense(nb_classes,activation='softmax')(x)model = Model(input_ten,output_ten)return model model_AlexNet = AlexNet(24,(img_height,img_width,3)) model_AlexNet.summary() Model: "model" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_1 (InputLayer) [(None, 224, 224, 3)] 0 _________________________________________________________________ conv2d (Conv2D) (None, 54, 54, 96) 34944 _________________________________________________________________ batch_normalization (BatchNo (None, 54, 54, 96) 384 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 26, 26, 96) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 26, 26, 256) 614656 _________________________________________________________________ batch_normalization_1 (Batch (None, 26, 26, 256) 1024 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 12, 12, 256) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 12, 12, 384) 885120 _________________________________________________________________ conv2d_3 (Conv2D) (None, 12, 12, 384) 1327488 _________________________________________________________________ conv2d_4 (Conv2D) (None, 12, 12, 256) 884992 _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 5, 5, 256) 0 _________________________________________________________________ flatten (Flatten) (None, 6400) 0 _________________________________________________________________ dense (Dense) (None, 4096) 26218496 _________________________________________________________________ dropout (Dropout) (None, 4096) 0 _________________________________________________________________ dense_1 (Dense) (None, 4096) 16781312 _________________________________________________________________ dropout_1 (Dropout) (None, 4096) 0 _________________________________________________________________ dense_2 (Dense) (None, 24) 98328 ================================================================= Total params: 46,846,744 Trainable params: 46,846,040 Non-trainable params: 704 _________________________________________________________________最終需要訓練的參數為46,846,040個,相比起LeNet已經是多到爆,但是相比于后面的網絡,這些訓練參數還是比較少的。
努力加油a啊
總結
以上是生活随笔為你收集整理的深度学习之基于Tensorflow2.0实现AlexNet网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言软件安装教程「建议收藏」(Proj
- 下一篇: 国美通讯:公司实控人将由黄光裕变更为无实