深入了解ResNet的Identity块和卷积块

问题描述 投票:0回答:2

我正在从Andrew Ng Coursera的讲座中学习残留网络(ResNet50)。我知道ResNets能够工作的主要原因之一是他们可以学习身份功能,这就是为什么在网络中添加越来越多的层不会损害网络性能的原因。

现在如演讲所述,ResNets使用两种类型的块:1)身份块和卷积块。

Identity Block用于输入和输出尺寸不变的情况。卷积块与标识块几乎相同,但在short-cut路径中有一个卷积层,仅用于更改尺寸,以使输入和输出的尺寸匹配。

这里是身份块:

enter image description here

这是卷积块:

enter image description here

现在正在执行卷积块(第二张图像),第一个块(即,conv2d --> BatchNorm --> ReLu是通过1x1卷积和跨步实现的。>

# First component of main path 
X = Conv2D(F1, (1, 1), strides = (s,s), name = conv_name_base + '2a', padding = 'valid', kernel_initializer = glorot_uniform(seed=0))(X)
X = BatchNormalization(axis = 3, name = bn_name_base + '2a')(X)
X = Activation('relu')(X)

我不明白步幅大于1且窗口大小为1的原因。这不只是数据丢失吗?在这种情况下,我们仅考虑备用像素。

选择这种超参数的可能原因是什么?任何直观的解释都会有所帮助!谢谢。

python tensorflow keras deep-learning resnet
2个回答
0
投票

我相信您可能已经回答了自己的问题。每当需要更改尺寸以使输出和输入尺寸匹配时,都会使用卷积块。就是说,如何使用卷积更改特定体积的尺寸?好吧,您改变了步伐。

对于任何给定的卷积运算,假设输入为平方,则可以通过公式(n + 2p-f)/ s +1获得输出体积的尺寸,其中n是输入尺寸,p是零填充,f是过滤器尺寸,s是跨度。通过增加跨度,您可以有效地减小快捷方式的输出量的尺寸,因此,可以使用这种方式来确保快捷方式和较低路径的尺寸匹配,以使最终总和被执行。

为什么为什么> 1?好吧,如果您不需要跨度大的步幅,那么首先就不需要更改尺寸,因此可以使用标识块。


0
投票

我不了解保持大步前进的原因> 1,带有窗口大小1。不仅仅是数据丢失吗?

请参阅resnet论文中有关“更深的瓶颈架构”的部分。https://arxiv.org/pdf/1512.03385.pdf

1 x 1卷积通常用于沿过滤器尺寸增加或减小尺寸。因此,在瓶颈架构中,第一个1 x 1层减小了尺寸,因此3 x 3层需要处理更小的输入/输出尺寸。然后最后的1 x 1层再次增加了滤镜的尺寸。

这样做是为了节省计算/培训时间。

从本文开始,>

“由于担心我们负担得起的培训时间,因此我们将构建基块修改为瓶颈设计。”

此外,请注意,使用Resnets时,即使直接处理输入图像像素的第一层的跨度也为2。

© www.soinside.com 2019 - 2024. All rights reserved.