为什么keras ResNet50的第一个maxpooling=55x55而在论文中它是56x56?

2024-06-28 20:03:26 发布

您现在位置:Python中文网/ 问答频道 /正文


我正在尝试使用预先训练过的ResNet50keras.application.resnet50文件作为我U网的编码器。我使用输入形状224x224x3(与第4页ResNet paper中所述的相同),但是我的第一个剩余块的输出是55 x 55 x##u过滤器。
在纸张上,输出大小应为56 x 56 x###u过滤器。这对我来说很重要,因为我使用从编码器到解码器的跳过连接,如下图所示。
U-Net with ResNet50 as encoder
编码器的特征映射与解码器的特征映射相连接。解码器具有56x56特征映射(从28x28向上采样)。如果编码器有55 x 55的功能映射,我不能使这个跳过连接。你知道吗

python中的示例代码:

from keras.applications.resnet50 import ResNet50,preprocess_input
R50 = ResNet50(include_top = False, input_shape = (224, 224, 3))
R50.layers.pop() # to remove the last pooling layer
R50.summary()

输出:
R50 summary output
感谢您的帮助。谢谢您!你知道吗


Tags: 文件过滤器inputapplication特征summary编码器解码器
1条回答
网友
1楼 · 发布于 2024-06-28 20:03:26


我查看了source code和第一个maxpooling:

x = MaxPooling2D((3, 3), strides=(2, 2))(x)

当输入为224时,不可能产生大小为56x56的输出。我认为正确的maxpooing函数应该是

x = MaxPooling2D(3, 2, padding = 'same')(x)

我不是100%肯定,但我认为这应该是目前的工作。如果你不这样想,请告诉我。非常感谢。你知道吗

相关问题 更多 >