卷积神经网络中参数量的计算与模型占用显存的计算

本文转自@花花知乎用户的文章片段「七夕的礼物」: 一日搞懂卷积神经网络,详细内容请看原作者的详细描述!


以前总看见别人说某某神经网络参数量有多少,大概占用多大的显存等等描述,但心里却并不知道为什么是这么多,今天看到这篇文章,大体上有了一定的理解。


参数量的计算:

「VGG Network」,牛津大学VGG实验室设计的架构,将AlexNet的8层提高到了19层,真正让深度这个词得以充分体现。
从VGG开始,人们不再使用太大的卷积核,取而代之的是若干个小卷积核的组合。
比如,3个步长为1的3X3卷积核,可以拥有1个7X7的卷积核一样的感受野。但是,它可以使整个网络变得更深,并且更具有非线性。
同时,还能够进一步减少训练的参数量。

image

关于参数的计算,有些朋友有一些疑惑,那么下图可以帮助你理解它是如何计算的。

我们要训练的参数其实就是卷积核的参数量,这和输入和输出的特征图数量以及卷积核本身的大小有关,希望下图的列子能够帮到你。备注:仔细理解下面这张图

image

如果你理解了上图的列子,欢迎你再尝试自己计算一下VGG16的总参数量
值得一提的是,在训练的时候,因为有forward 和 backward,所以参数量要乘以2,另外一个就是网络所需要的内存,这个也是非常重要的一个指标,因为当前的GPU内存空间非常有限。可以从下图得知,在网络最开始的几层,占用的GPU内存最多,而绝大多数的参数,都来自于全连接层,这也是一个后来全局池化被运用而全连接层被减少使用的原因。
image


模型占用显存的计算

妹纸:那个,可以问你,模型的Batch Size怎么决定嘛?或者说,怎样计算模型所需要的显存啊。。
花花:这个问题,就有那么一丢丢复杂了。。你听我慢慢说吗??
妹纸:额,这个,那还是算了吧。。
花花:。。。

还是补一个模型怎么计算吧。
正常来讲,显存的占用主要是Model本身和每一层的output。

image

计算方式为:
image

image

image

捕获.PNG

再次感谢知乎用户@花花的详解!详细信息请看原文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容