如何在Keras中串联两个模型?

时间:2019-06-18 11:39:15

标签: keras deep-learning concatenation conv-neural-network

我正在尝试在keras中创建模型。我阅读了一篇论文,并希望从本文中创建一个模型。这是我想要的: ArchitectureInPaper

我尝试创建这样的模型,但是我不知道如何在Keras中连接两个模型。以及本文中如何创建类似这种架构的模型。

input1 = Input(shape=(96,96,3))
x1 = Conv2D(64, 
(5,5),input_shape=input_shape,padding='same',activation='relu',strides= 
(2,2))(input1)
x1 = MaxPooling2D(pool_size=(2,2))(x1)
x1 = Conv2D(128, 
(5,5),input_shape=input_shape,padding='same',activation='relu',strides= 
(2,2))(input1)
x1 = MaxPooling2D(pool_size=(2,2))(x1)
x1 = Conv2D(256, 
(5,5),input_shape=input_shape,padding='same',activation='relu',strides= 
(2,2))(input1)
x1 = MaxPooling2D(pool_size=(2,2))(x1)

input2 = Input(shape=(96,96,3))
x2 = Dense(4032,activation='relu')(input2)

input3 = Input(shape=(96,96,3))
x3 = Dense(300,activation='relu')(input3)

input4 = Input(shape=(96,96,3))
x4 = Dense(7,activation='softmax')(input4)


x = concatenate([input2,input4])

x = Dense(4039,activation='relu')(x)
x = Dense(1000,activation='relu')(x)
x = Dense(500,activation='relu')(x)
main_output = Dense(15, activation='sigmoid', name='main_output')(x)

model = Model(inputs=[input2,input4],outputs =[main_output])

2 个答案:

答案 0 :(得分:0)

您可以使用concatenate层。参见文档https://www.tensorflow.org/api_docs/python/tf/keras/layers/concatenate

x = keras.layers.concatenate([fc4032, emo8])

x的输出形状为4040,如纸张中所示。

答案 1 :(得分:0)

不清楚您打算实现哪种模型架构,Fig3或4? 对于图3所示的体系结构,您不需要连接任何两个层或模型。 对于图4中的体系结构,您最好可以在keras中尝试使用功能性API,该API可以使用keras.backend.concatenate()进行层级连接。

对stackoverflow本身进行回答将很有帮助。 How to concatenate two layers in keras?