多种卷积网络的Parameter计算

LeNet

首先计算一下最简单的LeNet。网络结构如下:

参数总量: 61706 61495
参数内存消耗: 240.214KB

AlexNet
Alexnet的结构图有些奇怪。但其实是因为要把网络拆分到两个GPU上,才画成了两层,两层的结构是一样的,下面计算的时候的结构相当于合并以后的网络。



参数总量: 62369155
参数内存消耗: 237.9195MB

VGG

VGG常见有16层和19层的,这里以16层为例,下面是模型结构图。

参数总量: 138357544 138348355
参数内存消耗: 527.7570MB

GoogleNet

googlenet 提出了inception的概念,用于增加网络深度和宽度,提高深度神经网络性能。下面是googlenet的网络结构:

 

inception的结构如下:

可以看出,inception的结构是多个卷积堆叠,组合而成的。

还有,从上面的网络结构中,可以看到一共有三个输出的分类层:

这个是为了解决深层网络训练的时候梯度消失的问题,所以在中间加入了几个全连接层辅助训练。
最后,贴一个论文上给出的模型的结构图:

在这个图上,已经给出了参数的数量和使用的内存,不过我还是说一下inception模块的计算方法和一些注意事项。

  1. 首先是输入,输入的size应该为224x224x3
  2. 注意第一层的卷积,没有注明padding,直接算的话,结果是不对的,这里的padding计算方法和tensorflow中卷积方法padding参数设置为’SAME’是一样的。简单来说,就是ceil(size/kernel_size),这个对于下面的计算也是一样的,总之,就是要填适当的0,使得输出结果和上图相对应就是了。
  3. 在上图中5~10列对应inception module中的各个卷积操作,对应的值是输出的feature的数量,对于maxpool操作,他的padding为2,stride为1。
  4. 当一个inception模块计算完后,它的输出为各个卷积操作输出的结果连接起来,也就是如果输出分别为28x28x64、28x28x128、28x28x32、28x28x32,那么最终输出就是28x28x(63+128+32+32)。
  5. 下面的图给出了inception module内部计算的输出结果。

可以看出googlenet的参数量要比vgg少很多,但是效果确更优秀。

Resnet
关于resnet,我就不打算计算参数了,因为实在量很大,而且实际上,resnet的基本结构也比较简单,计算方法和前面的没什么差别。这里就简单贴一下结构图好了。

可以看出来,如果没有中间一条条连线,其实就是一个很深的普通的卷积网络,中间的连线可以保证梯度可以传递到低层,防止梯度消失的问题。


--------------------- 
作者:qian99 
来源:CSDN 
原文:https://blog.csdn.net/qian99/article/details/79008053 
版权声明:本文为博主原创文章,转载请附上博文链接!

--------------------- 
作者:qian99 
来源:CSDN 
原文:https://blog.csdn.net/qian99/article/details/79008053 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值