卷积神经网络之(深度卷积神经网络)AlexNet

卷积神经网络之AlexNet

2012年AlexNet横空出世,赢得了ImageNet2012图像识别挑战赛。首次证明了学习到的特征可以超越手工设计的特征。

AlexNet模型

AlexNet模型使用了8层卷积神经网络,其中有5层卷积和2层全连接层以及1个全连接输出层。

网络结构与具体参数如下:

 

Block 连接层 Filter大小 步长stride Filter个数 图像尺寸 计算方法
input / / / / 227*227*3 /
1 卷积层 11*11 4 96 55*55*96 (227-11)/4+1=55
池化层 3*3 2 / 27*27*96 (55-3)/2+1=27
2 卷积层 5*5 1 128*2 (27-5+2*2)/1+1=27 27*27*128*2
池化层 3*3 2 / (27-3)/2+1=13 13*13*128*2
3 卷积层 3*3 1 192*2 (13-3+1*2)/1+1=13 13*13*192*2
4 卷积层 3*3 1 192*2 (13-3+1*2)/1+1=13 13*13*192*2
5 卷积层 3*3 1 128*2 (13-3+1*2)/1+1=13 13*13*128*2
池化层 3*3 2 / (13-3)/2+1=6 6*6*128*2
6 全连接层 6*6 / 256 4096 Relu、Dropout
7 全连接层 / / / 4096 /
8 全连接层       1000 SoftMax

代码

from keras.models import Sequential
from keras.layers import Dense, Flatten, Dropout
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.utils.np_utils import to_categorical
import numpy as np
seed = 7
np.random.seed(seed)

# 创建模型序列
model = Sequential()
#第一层卷积网络,使用96个卷积核,大小为11x11步长为4, 要求输入的图片为227x227, 3个通道,不加边,激活函数使用relu
model.add(Conv2D(96, (11, 11), strides=(1, 1), input_shape=(28, 28, 1), padding='same', activation='relu',
                 kernel_initializer='uniform'))
# 池化层
model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2)))
# 第二层加边使用256个5x5的卷积核,加边,激活函数为relu
model.add(Conv2D(256, (5, 5), strides=(1, 1), padding='same', activation='relu', kernel_initializer='uniform'))
#使用池化层,步长为2
model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2)))
# 第三层卷积,大小为3x3的卷积核使用384个
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'))
# 第五层卷积使用的卷积核为256个,其他同上
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(10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
model.summary()

卷积神经网络之(深度卷积神经网络)AlexNet_第1张图片

总结

  • AlexNet与LeNet结构类似,但是使用了更多的卷积层和更大的参数空间拟合大规模数据集。
  • 网络的深度很重要

代码参考:初探Alexnet网络结构
 

其他经典网络结构:

卷积神经网络之 LeNet卷积神经网络之(稠密连接网络)DenseNet

卷积神经网络之(深度卷积神经网络)AlexNet

卷积神经网络之(使用重复元素的网络)VGG

卷积神经网络之残差网络ResNet详解

你可能感兴趣的:(Deep,Learning,神经网络,深度学习,卷积神经网络,卷积)