我的问题是关于 ResNet 的参数。
为什么网络的参数往往比 VGG 少?如果我从 Yannic Kilcher那里得到的论文和摘要是正确的,就会出现这种情况。
据我了解,您将输入 x 与残差块中另一层的输出 x_prime 连接起来。即使您更深入,这也使您能够训练更稳定的网络。
为什么这会导致参数比 VGG 少?我建议是这种情况,因为您在由于步幅而尺寸已经减小的层上执行成本更高的操作(更多过滤器)?这个对吗?
我的问题是关于 ResNet 的参数。
为什么网络的参数往往比 VGG 少?如果我从 Yannic Kilcher那里得到的论文和摘要是正确的,就会出现这种情况。
据我了解,您将输入 x 与残差块中另一层的输出 x_prime 连接起来。即使您更深入,这也使您能够训练更稳定的网络。
为什么这会导致参数比 VGG 少?我建议是这种情况,因为您在由于步幅而尺寸已经减小的层上执行成本更高的操作(更多过滤器)?这个对吗?
网络中有 2 个不同级别的复杂性:
在使用 CNN 时区分尤为重要,因为卷积核应用于许多不同的像素,因此在不同的计算中将使用相同的权重。比例大约是在完全连接的网络中,但在 CNN 中更为重要。
这篇文章很好的解释了每个CNN架构的参数数量,你应该看看。
如果你看一下 ResNet 和 VGG 的参数表,你会注意到大部分 VGG 参数都在最后的全连接层(架构的 1.4 亿个参数中大约有 1.2 亿个)。这是由于卷积部分的输出层尺寸巨大。
输出大小为 512 个 7*7 的特征图,所以相当于一个 全连接网络中的大小层。这就是为什么到下一层(有 4096 个神经元)的连接非常昂贵并且需要 参数。
这是 VGG 的一个特殊之处,这个架构有 70% 的参数用于一层。
现在如果和 ResNet 比较,ResNet 最后在每个特征图上使用一个 avg pool,所以卷积部分的输出数量是 512 个值,这导致网络的全连接部分有 参数(如果我们忘记每个神经元的偏差)。
这就是为什么(至少在我的大脑中)VGG 有这么多参数而 ResNet 保持相当低的原因。
正如我之前提到的,具有许多参数的层对于网络来说可能不是最难计算的,这取决于参数是只使用一次(全连接层)还是更多(卷积层),所以 VGG 的 100M 参数层可能不是其重要的操作数的原因。
我对我在这里的解释不太自信,但我认为 ResNet 的效率是由于 Resnet 迅速减小了特征图的大小(第一层也将其除以 2 和第二层),所以因为我们的工作量更少像素,我们要做的计算更少。
VGG 在其所有 3 层的所有 3 个图像的 224*224 像素的每个像素上应用 3x3 卷积核,这是效率不高且需要大量计算能力的方法。
这就是我将如何解释 ResNet 的计算复杂度低于 VGG
抱歉写了这么久,希望对你有帮助。