Изменить размер ввода в керасе - PullRequest
0 голосов
/ 27 апреля 2018

Я обучил полностью сверточную нейронную сеть с Keras. Я использовал Functional API и определил входной слой как Input(shape=(128,128,3)), что соответствует размеру изображений в моем тренировочном наборе.

Однако я хочу использовать обученную модель на изображениях переменных размеров (что должно быть в порядке, потому что сеть полностью сверточная). Для этого мне нужно изменить свой входной слой на Input(shape=(None,None,3)). Очевидным способом решения этой проблемы было бы обучение моей модели непосредственно с формой ввода (None,None,3), но я использую пользовательскую функцию потерь, где мне нужно указать размер моих тренировочных образов.

Я попытался определить новый входной слой и назначить его моей модели следующим образом:

from keras.engine import InputLayer

input_layer = InputLayer(input_shape=(None, None, 3), name="input")
model.layers[0] = input_layer

Это на самом деле соответственно меняет размер входных слоев, но следующие слои по-прежнему ожидают (128,128,filters) входных данных.

Есть ли способ изменить все входные значения одновременно?

1 Ответ

0 голосов
/ 27 апреля 2018

Создать новую модель, точно такую ​​же, за исключением новой формы ввода; и вес трансфера:

newModel.set_weights(oldModel.get_weights())

Если что-то пойдет не так, то оно может быть не полностью сверточным (например, содержит слой Flatten).

...