Изменение maxpooling слоя в Resnet50 keras.applications - PullRequest
0 голосов
/ 05 июня 2018

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

0 голосов
/ 05 июня 2018

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

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

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

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

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

...