Alexnet输入大小调整的经验

       Alexnet是在2012的ImageNet图像分类竞赛中亮相的,top-5错误率比上一年的冠军下降了十个百分点,而且远远超过当年的第二名。一下子打破了之前深度学习的冷门期。AlexNet 优势在于:网络增大(5个卷积层+3个全连接层+1个softmax层),同时解决过拟合(dropout,data augmentation,LRN),并且利用多GPU加速计算。这里我将以第一层和第二层为例介绍自己调整Alexnet输入大小的经验。截图来自:http://blog.csdn.net/sunbaigui/article/details/39938097

Alexnet输入大小调整的经验_第1张图片

   Alexnet输入大小调整的经验_第2张图片

  简单的说就是上一层的输出尺寸要与下一层的输入尺寸吻合,比如第一层的输出是大小为27*27,第二层的输入就是27*27,只要经过计算就可以得到相应大小的模型。不过这只是简单的调整,还没有从原理上解释过,希望看到的各位有所斟酌。

调整举例:

1.  从227*227到60*60:

从第一部分的图可以看出,输入是227*227,经过“conv1”层得到55*55*96的特征图,参数有三个num_output=96,kernel_size=11,stride=4,如果要将输入改成60*60,那只需要将kernel_size改成6,stride改成1,经过一下公式的计算,也可以得到特征图是55*55。

输入:n*c0*w0*h0

输出:n*c1*w1*h1

其中,c1就是参数中的num_output,生成的特征图个数。

 w1=(w0+2*pad-kernel_size)/stride+1;

 h1=(h0+2*pad-kernel_size)/stride+1;

    即width=height=(60-6)/1+1=55。

    这是最简单的一种将输入改成60*60的方法,改完第一层以后后面的尺寸就都可以对上了。

2.  去掉第一层中的卷积和relu层

这种方法和第一种方法的原理是一样的,就是直接进行pooling,以取得

在第一层结束的时候获得27*27*96的“data”。如果我们直接将60*60的图像输入,进行pooling,那么运算过程就应该是(60-kernel_size)/stride+1=27,如果stride=2,那么kernel_size就是8。这样后面的尺寸也就能对上了。

    希望给大家有所启发,互相交流,共同促进。

你可能感兴趣的:(Alexnet输入大小调整的经验)