AlexNet
CNN模型复现1 AlexNet
1. AlexNet
1.1 要点
1.2 网络结构
1.3 代码
1. AlexNet
1.1 要点
AlexNet加入‘relu’激活函数、Batchnormalization。 AlexNet有5个卷基层和3个全连接层。
输入图片尺寸[224,224,3],第一层用96个尺寸为11x11x3,步长为4的卷机核提取特征,然后标准化和用池化核为3,步长为2的最大池化进行池化。
第二层把96个特征分开训练,用256个5x5x48的卷机核提取特征,然后标准化和用池化核为3,步长为2的最大池化进行池化。
第三层用384个3x3x256的卷机核提取特征。
第四层用384个3x3x192的卷机核提取特征。
第五层用256个3x3x192的卷机核提取特征,然后标准化和用池化核为3,步长为2的最大池化进行池化。
然后对特征层展平,进行两次神经元为4096的全连接,一次Dropout,最后进行一次神经元为1000的全连接。
1.2 网络结构
224,224,3–>C(96,11*11,4,‘s’,‘relu’,[56, 56, 96])BM(3,2,[27, 27, 96])–>
27,27,96–>C(256,5*5,1,‘s’,‘relu’,[27, 27, 256])BM(3,2,[13, 13, 256])–>
13,13,256–>C(384,3*3,1,s,‘relu’,[13, 13, 384])–>
13,13,384–>C(384,3*3,1,s,‘relu’,[13, 13, 384])–>
13,13,384–>C(256,3*3,1,s,‘relu’,[13, 13, 256])BM(,[6, 6, 256])–>
6,6,256–>F([9216])D(4096,‘relu’,[4096])D(4096,‘relu’,[4096])D(0.5)D(1000,‘safamax’,[1000])–>
1000
1.3 代码
(1) 代码流程
导入函数
设置tensor
建立第一层
2~5层卷积块儿
中间的2个全连接层
最后输出的全连接层
建立model(pip install pydot)
Conv(f=96,k=11,s=4,p='s')
Relu
Batchnorm
MaxPool(k=3,s=2)
↓
Conv(f=256,k=5,s=1,p='s')
Relu
Batchnorm
MaxPool(k=3,s=2)
↓
Conv(f=384,k=3,s=1,p='s')
Relu
↓
Conv(f=384,k=3,s=1,p='s')
Relu
↓
Conv(f=256,k=3,s=1,p='s')
Relu
Batchnorm
MaxPool(k=3,s=2)
↓
Flatten
Fc(4096)
Relu
Fc(4096)
Relu
Dropout(0.5)
↓
Fc(1000)
SoftMax
(2) python代码
'''代码用BatchNormalization代替LRN(Local Response Normalization)'''