首先,我们我们知道深度学习中网络的计算量代表时间复杂度,参数量代表空间复杂度。
从ResNet的论文中可知(ResNet论文可在这个文章中的第六部分找到)152层的残差网络在时间复杂度上和VGG16是一样大的。
接下来我们先对VGG16的计算量(时间复杂度)和参数量(空间复杂度)都进行估算。(VGG网络的相关知识可以在这篇文章中了解)
我们以VGG16的第一层卷积为例:
输入图像224 * 224 * 3,输出224 * 224 * 64,卷积核大小为3 * 3.
计算量: Times = 224 * 224 * 3 * 3 * 64=8.7 * 10^7
参数量: Space = 3 * 3 * 3 * 64=1728
我们再对最后一层卷积进行计算:
输入 14 * 14 * 512,输出 14 * 14 * 512,卷积核大小为3 * 3
计算量: Times = 14 * 14 * 3 * 3 * 512 * 512 = 4.6 * 10^8
参数量: Space = 3 * 3 * 512 * 512 = 2.4 * 10^6
我最后对最后一层全连接层进行计算:
全连接层可以看成是一种特殊的卷积层,上层为1 * 1 * 4096,下层为 1 * 1 * 1000,使用的是1 * 1的卷积核进行卷积。
计算量: Times = 1 * 1 * 1 * 1 * 4096 * 1000 = 4 * 10^6
参数量: Space = 1 * 1 * 4096 * 1000 = 4 * 10^6
VGG16网络总结:
卷积层的时间复杂度大致是在同一数量级的。
随着网络深度的加深,卷积层的空间复杂度快速上升(每层的空间复杂度是上一层的两倍)。
全连接层的空间复杂度比卷积层的最后一层还大。
说了以上的内容,我们回过头来再看问题:VGG16核ResNet152哪个参数量更多?
应该是VGG16参数量更多,因为ResNet152是用了Bottleneck Design结构,这个结构有两个1 * 1 和一个3 * 3的卷积组成,大大缩减了参数量。(关于Bottleneck可以参考这篇文章的第一部分)