深度学习之alexNet算法参数量

                          AlexNet中的参数数量

         AlexNet的网络结构图:
深度学习之alexNet算法参数量
总的来说,AlexNet由输入层,5个卷积层,3个全连接层组成(其中最后一个全连接层也是softmax输出层)。图中详细标出了输入大小以及各层的结构参数。特别需要注意的是:网络是分布在2个GPU上的,部分层只跟同一个GPU中的上一层连接(看起来,*那个帖子中题主没有考虑这个问题)。

接下来梳理一下各层的参数情况:

  • 输入层:图片大小:宽高通道(RGB)依次为W * H * C = 224 x 224 x 3, 即150528像素。
  • 第1个隐层, 卷积层,使用96个11 x 11 x 3的卷积核,如图所示节点数量为:55(W) x 55(H) x 48(C) x 2 = 290400(注:这个地方的节点数与论文中提到的要高,有点奇怪。因为这层跟其他层计算方法一样,其他层的节点数跟论文中完全一致)。根据卷积层的参数 = 卷积核大小 x 卷积核的数量
    + 偏置数量(即卷积的核数量)
    ,本层参数数量为:
    (11 * 11 * 3 * 96) + 96 = 34848, 注:参数分为2部分 ww 和 bb ,“+”前面一部分是 ww 的数量, “+”后面那部分是 bb 的数量,后面的层也按这个思路来计算。
  • 第2个隐层,卷积层, 使用256个5x5x48卷积核,只跟同一个GPU的上一层连接,节点数量:27*27*128*2 = 186624,参数数量:(5*5*48*128+128)*2 = 307456,最后"*2"是因为网络层均匀分布在两个GPU上,先计算单个GPU上的参数,再乘以GPU数量2。
  • 第3个隐层,卷积层,使用384个3x3x256卷积核,节点数量:13*13*192*2 = 64896,参数数量:3*3*256*384+384 = 885120。
  • 第4个隐层,卷积层,使用384个3x3x192卷积核,只跟同一个GPU的上一层连接,节点数量:13*13*192*2 = 64896,参数数量:(3*3*192*192+192)*2 = 663936。
  • 第5个隐层,卷积层,使用256个3x3x192卷积核,只跟同一个GPU的上一层连接,节点数量:13*13*128*2 = 43264,参数数量:(3*3*192*128+128)*2 = 442624。
  • 第6个隐层,全连接层,节点数为4096。根据全连接层的参数数量 = 上一层节点数量(pooling之后的) x 下一层节点数量 + 偏置数量(即下一层的节点数量),参数数量为:(6*6*128*2)*4096+4096 = 37752832,可以看到这个参数数量远远大于之前所有卷积层的参数数量之和。也就是说AlexNet的参数大部分位于后面的全连接层。
  • 第7个隐层,全连接层,节点数量为4096。参数数量为:4096*4096 + 4096= 16781312。
  • 第8个隐层,全连接层,也是1000-way的softmax输出层,节点数量为1000。参数数量为: 4096*1000 + 1000 = 4097000。

深度学习之alexNet算法参数量

总结:

      所有的算法只要你知道网络结构,根据这个计算过程都能算出参数量。

       1000分类,输入图像224*224*3的参数量。6000万的参数量。

        全连接层占有90%的参数量。