我正在开发一个分段项目,并想知道是否有办法修改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)
答案 0 :(得分:2)
您始终可以复制源代码并创建替代版本。
复制resnet的源代码,将类重命名为CustomResnet并更改所需内容。
根据我对分割的经验,如果您打算将其用于可变大小,这对您没有多大帮助,因为在您执行UpSamplings时,您将无法知道图像的原始大小。因此,UpSamplings通常会比原始版本更大。
现在,如果你正在使用固定大小,那么你可以在模型中找到一种正确填充的方法。
但我真的建议您计算MaxPooling图层的数量,并确保输入图像大小是2^poolingLayers
的倍数。