объединить разные модели с разными входами керас - PullRequest
0 голосов
/ 07 мая 2018

Я бы хотел обучить две разные модели Conv в Керасе с разными входными размерами.

У меня есть:

 input_size=4
 input_sizeB=6

 model=Sequential()
 model.add(Conv2D(filters=10,input_shape= 
 (1,time_steps,input_size),kernel_size(24,3),activation='relu',data_format='channels_first',kernel_regularizer=regularizers.l2(0.001)))
 model.add(Flatten())
A= model.add(Dense(25, 
activation='tanh',kernel_regularizer=regularizers.l2(0.003)))

 model2=Sequential()
 model2.add(Conv2D(filters=10,input_shape= 
 (1,time_steps,input_sizeB),kernel_size(24,3),activation='relu',data_format='channels_first',kernel_regularizer=regularizers.l2(0.001)))
  model2.add(Flatten())
B= model2.add(Dense(25, 
activation='tanh',kernel_regularizer=regularizers.l2(0.003)))

Теперь я бы слил два плотных слоя в конце обеих сетей.

Как мне поступить?

1 Ответ

0 голосов
/ 07 мая 2018

Используя Sequential API, вы можете использовать слой Merge ( doc ) следующим образом:

merged_layer = Merge([model, model2], mode='concat') # mode='sum', 'ave', etc.
merged_model = Sequential()
merged_model.add(merged_layer)

Обратите внимание, что это выдаст предупреждение (в зависимости от вашей версии, код все еще должен работать), так как последовательный Merge становится устаревшим. В противном случае вы могли бы рассмотреть Functional API, который предлагает некоторую большую гибкость в отношении c.f. несколько предопределенных merge слоев, которые Keras предоставляет в зависимости от операции, которую вы хотите использовать ( doc ). Найдите пример ниже:

merged_layer = Concatenate()([model.output, model2.output])
merged_model = Model([model.input, model2.input], merged_layer)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...