修改 Resnet50 中的 maxpooling 层 keras.applications

Modifying maxpooling layer in Resnet50 keras.applications

我正在做一个分割项目,想知道是否有办法修改 keras.application 中的 resent50 maxpooling 层。我在 Kaggle 内核中使用 keras.application 并且想知道我是否可以通过代码更新层。

x = ZeroPadding2D(padding=(3, 3), name='conv1_pad')(img_input)
x = Conv2D(64, (7, 7), strides=(2, 2), name='conv1')(img_input)
x = BatchNormalization(axis=bn_axis, name='bn_conv1')(x)
x = Activation('relu')(x)
x = MaxPooling2D((3, 3), strides=(2, 2))(x)

至:

x = Conv2D(64, (7, 7), strides=(2, 2), padding='same', name='conv1')(img_input)
x = BatchNormalization(axis=bn_axis, name='bn_conv1')(x)
x = Activation('relu')(x)
x = MaxPooling2D((3, 3), strides=(2, 2), padding = 'same')(x)

您可以随时复制源代码并创建替代版本。

复制 resnet 的源代码,将 class 重命名为 CustomResnet 并更改您想要的内容。

不过,根据我的分割经验,如果您打算将其用于可变大小,这对您没有多大帮助,因为在执行上采样时,您将不知道图像的原始大小。所以 UpSamplings 通常最终会比原来的更大。

现在,如果您使用的是固定尺寸,好的,您最终可以找到一种在模型内正确填充的方法。

但我真的建议您计算 MaxPooling 层的数量,并确保您的输入图像大小是 2^poolingLayers 的倍数。