Я работаю над проектом сегментации и задаюсь вопросом, есть ли способ модифицировать слой resent50 maxpooling в keras.application. Я использую keras.application в ядре Kaggle и задаюсь вопросом, могу ли я обновить слой с помощью кода.
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, переименовать класс в CustomResnet и изменить то, что вы хотите.
Из моего опыта с сегментацией, однако, это не поможет вам, если вы собираетесь использовать его с переменными размерами, потому что в то время, когда вы выполняете UpSamplings, вы не будете знать размер оригинала. Таким образом, UpSamplings часто заканчиваются больше, чем оригинал.
Теперь, если вы работаете с фиксированными размерами, хорошо, вы можете в конечном итоге найти способ заполнения в модели.
Но я действительно предлагаю вам подсчитать количество уровней MaxPooling и убедиться, что размеры входных изображений кратно
2^poolingLayers
.