0

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

1 回答 1

2

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

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

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

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

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

于 2018-06-05T17:38:06.790 回答