Изменение уровня максимального уровня в Resnet50 keras.applications

Hello World спросил: 12 мая 2018 в 03:53 в: python

Я работаю над проектом сегментации и задаюсь вопросом, есть ли способ модифицировать слой 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)

1 ответ

Есть решение
Daniel Möller ответил: 12 мая 2018 в 03:58

Вы всегда можете скопировать исходный код и создать альтернативные версии.

Скопировать исходный код для resnet, переименовать класс в CustomResnet и изменить то, что вы хотите.

Из моего опыта с сегментацией, однако, это не поможет вам, если вы собираетесь использовать его с переменными размерами, потому что в то время, когда вы выполняете UpSamplings, вы не будете знать размер оригинала. Таким образом, UpSamplings часто заканчиваются больше, чем оригинал.

Теперь, если вы работаете с фиксированными размерами, хорошо, вы можете в конечном итоге найти способ заполнения в модели.

Но я действительно предлагаю вам подсчитать количество уровней MaxPooling и убедиться, что размеры входных изображений кратно 2^poolingLayers.