在“ Keras的ResNet50模型”中,为什么要使用步长= 2的1x1卷积?

时间:2018-07-03 01:36:58

标签: keras

ResNet50在这里:https://github.com/fchollet/deep-learning-models/blob/master/resnet50.py

在“ conv_block”中,第一层是这样的:

x = Conv2D(filters1 = 64,           # number of filters
           kernel_size=(1, 1),      # height/width of filters
           strides=(2, 2)           # stride
          )(input_tensor)

我的问题是:

这层会丢失一些像素吗?
此1x1卷积仅看1个像素,然后移动2个像素(步幅= 2)。

1 个答案:

答案 0 :(得分:2)

在Resnet的原始论文中提到过:

  

卷积层主要具有3×3滤镜和   遵循两个简单的设计规则:(i)对于相同的输出   要素图大小时,图层具有相同数量的过滤器; (ii)如果特征图的大小减半,则过滤器的数量将增加一倍,以保持每层的时间复杂度。我们直接执行降采样   跨度为2的卷积层

因此,您可以将其视为池化层的替代,并且与计算整个激活图然后将其池化相比,它还可以降低整个模型的计算复杂性。