修改Resnet50中的maxpooling层keras.applications

时间:2018-06-05 17:33:22

标签: python keras keras-layer max-pooling

我正在开发一个分段项目,并想知道是否有办法修改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)

1 个答案:

答案 0 :(得分:2)

您始终可以复制源代码并创建替代版本。

复制resnet的源代码,将类重命名为CustomResnet并更改所需内容。

根据我对分割的经验,如果您打算将其用于可变大小,这对您没有多大帮助,因为在您执行UpSamplings时,您将无法知道图像的原始大小。因此,UpSamplings通常会比原始版本更大。

现在,如果你正在使用固定大小,那么你可以在模型中找到一种正确填充的方法。

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