合并不同的模型与不同的输入Keras

时间:2018-05-07 12:50:30

标签: merge keras convolutional-neural-network

我想在Keras训练两种不同输入尺寸的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)))

现在我将在两个Conv网末端合并两个密集层。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用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方面提供了更多的灵活性。 Keras提供的几个预定义的合并层取决于您要使用的操作(doc)。查找以下示例:

merged_layer = Concatenate()([model.output, model2.output])
merged_model = Model([model.input, model2.input], merged_layer)