Как загрузить модель keras CNN с полностью связанными слоями и преобразовать в FCN?

У меня есть модель в стиле VGG16 (т.е. CNN с полностью подключенными слоями), сохраненная в виде файла json, и веса в виде файла h5.

Я хочу загрузить эту модель и преобразовать ее в FCN (полностью сверточная модель), которая может принимать изображения RGB переменного размера в качестве входных данных.

Насколько я понимаю, есть 4 основных шага: 1) Измените входной слой, чтобы он принимал входы переменного размера для входов RGB. 2) Удалите полностью связанные слои из модели стиля VGG16 с полностью связанными слоями. 3) Добавьте соответствующие слои свертки, эквивалентные полносвязным слоям. 4) Измените форму и установите веса для новых слоев свертки.

Кажется, я знаю, как сделать шаги 2-4. Однако у меня проблемы с выполнением шага 1.

Я читал такие сообщения, как Keras, заменяющий входной слой, но не нашел работающего решения. для меня.

Вот что я хотел бы сделать:

#load model & weights
with open(model_json_file, 'r') as json_file:
    model_json = json_file.read()

vgg16_model = model_from_json(model_json)
vgg16_model.load_weights(model_h5_file)

#remove input layer
vgg16_model.layers.pop(0)

x = vgg16_model.get_layer('block5_pool').output
x = Conv2D(4096, (7,7), strides=1, padding='same', data_format='channels_last', activation='relu', use_bias=True)(x)
x = Conv2D(1000, (7,7), strides=1, padding='same', data_format='channels_last', activation='relu', use_bias=True)(x)
x = Conv2D(2, (7,7), strides=1, padding='same', data_format='channels_last', activation='relu', use_bias=True)(x)

new_input = Input(shape=(None,None,3), batch_shape=None, name='fcn_input')
vgg16_model.layers[0](new_input)
fcn_model_fixed_input = Model(inputs=vgg16_model.input, outputs=x)

Однако тогда:

fcn_model_fixed_input.summary()

дает:

wind_turbine_fcn_model_fixed_input.summary()


person user3731622    schedule 15.03.2019    source источник
comment
Можете ли вы уточнить проблемное место? будет ли нормализация входных данных приемлемой?   -  person olympia    schedule 15.03.2019
comment
Я не уверен, почему нормализация входных данных может оказаться полезной? Я старался быть подробным в своем описании (отсюда и длинное описание).   -  person user3731622    schedule 16.03.2019