Press "Enter" to skip to content

AlexNet神经网络

首先输入层数据是224*224*3的特征图,使用两个GPU同时进行运算,神经网络图:

 

神经网络一般越往后层,越要获得细节特征,所以前面的网络层可以设置卷积核大一点,粗略获取特征。

 

 

说明: ALexNet是使用两个GPU同时对模型进行训练,所以第一层得到的55*55*96的特征图, 实际上是每个GPU训练 55*55*48的特征图,最后将两个GPU上的特征图合并即可。

 

首先输入层是224*224*3,先用padding将图片特征变换成227*227*3的特征图。特征提取过程:

 

 

AlexNet网络的过程:

 

AlexNet网络,
1. 使用一个卷积将图片通道变成55*55*96      使用池化将特征图压缩到27*27*96
2. 使用一个卷积增宽通道为 27*27*256        使用池化将特征图压缩 13*13*256
3.使用卷积将通道增加为13*13*384,         继续使用卷积不改变特征图规格13*13*384
4.使用卷积将通道数减少 13*13*256           使用池化将特征图压缩 6*6*256
5.将特征图展开成一维向量,由上一层6*6*256=9216, 所以全连接层变成 [9216,1]的向量
6.减少神经元结点,全连接层变为 [4096,1]的向量,
7.神经元个数不变,继续添加全连接层,依然为[4096,1]的向量,
8.到达输出层,是一个1000分类的模型,所以变成 [1000,1]的向量。

 

AlexNet神经网络特点:

 

AlexNet神经网络每个卷积层和每个全连接层都使用Relu激活函数,输出层使用softmax激活函数
AlexNet包含8层神经网络, 5个卷积层, 3个全连接层,
AlexNet将sigmoid激活函数改成Relu激活函数后,使激素按更简单,网络更容易训练
AlexNet通过Dropout来控制全连接层的模型复杂度。
AlexNet使用了大量图像增强,如翻转,颜色变化,裁剪,从而扩大数据集,来缓解过拟合

 

第一层:

 

第一层卷积核: 两个48@11*11*3 (合并起来就是96@11*11)          步长:4

 

首先输入层是224*224*3,先用padding将图片特征变换成227*227*3的特征图。

 

AlexNet ,输入变为227*227,经过第一层卷积后,每个GPU得到55*55*48的特征图,一共两个GPU,如果合并,则是55*55*96    卷积使用Relu激活函数

 

第一层Max_pool池化核:  3*3   步长为:2             padding=0

 

得到的特征图为:27*27*96,每个GPU上是27*27*48的

 

运算公式:

 

hight是图的高度, padding是添0的边数  size是卷积核的高度, stride是步长

 

hight = ((hight+2*padding-size)/stride )+ 1

 

hight = ((227 + 2*0 – 11) / 4) + 1 = 55

 

weight = ((227 + 2*0 – 11) / 4) + 1 = 55,

 

每个GPU上卷积核通道数48, 所以每个GPU得到的特征图为 55*55*48

 

第二层 :

 

第二层:卷积层2, 输入为上一层卷积的feature map, 卷积核的个数为256个,论文中的两个GPU分别有128个卷积核。卷积核的大小为: 5 × 5 × 48      pad = 2,    stride = 1;   激活函数使用Relu激活函数, 最后 max_pooling, pool_size = (3, 3), stride = 2;

 

第三层

 

在第三层神经网络将两个数据进行相互融合(不是合并),   模型是放在两个GPU上训练的,所以GPU1 和GPU2都各得到了13*13*128的特征图, 怎幺进行融合呢, 就是把GPU1得到的特征图在这一层去和GPU2的卷积层进行卷积运算, 把GPU2得到的特征图去和GPU1的卷积层进行卷积运算。

 

卷积核个数为384    kernel_size = ( 3 × 3 × 256 )    padding = 1    第三层没有做池化   使用Relu激活函数

 

第四层

 

卷积核个数为384, kernel_size=( 3 × 3 ), padding = 1,使用Relu激活函数 第四层没有做池化

 

第四层操作与第三层完全一样

 

第五层

 

卷积核个数为256, kernel_size = ( 3 × 3 ), padding = 1      使用Relu激活函数

 

使用最大池化,MaxPool,  池化核为3*3     步长为2

 

全连接层

 

全连接层将两个GPU的特征合并成一个向量。每层全连接层都使用Relu激活函数。

 

第6,7,8层是全连接层,每一层的神经元的个数为4096,最终输出softmax为1000,因为上面介绍过,全连接层中使用了Dropout。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注