Keras - 合并图层 - Keras 2.0

时间:2017-06-22 22:08:36

标签: keras keras-layer

我正在尝试合并两个网络。我可以通过以下方式实现这一目标:

merged = Merge([CNN_Model, RNN_Model], mode='concat')

但我收到警告:

merged = Merge([CNN_Model, RNN_Model], mode='concat')
__main__:1: UserWarning: The `Merge` layer is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.

所以我尝试了这个:

merged = Concatenate([CNN_Model, RNN_Model])
model = Sequential()
model.add(merged)

并收到此错误:

ValueError: The first layer in a Sequential model must get an `input_shape` or `batch_input_shape` argument.

任何人都可以给我一些语法,我将如何使用它?

1 个答案:

答案 0 :(得分:2)

不要将序列模型用于带分支的模型。

使用功能API:

from keras.models import Model  

您正好使用Concatenate图层,但您必须通过"张贴"它。首先你创建它,然后用输入张量调用它(这就是为什么有两个括号):

concatOut = Concatenate()([CNN_Model.output,RNN_Model.output])

要创建模型,您需要定义从输入到输出的路径:

model = Model([CNN_Model.input, RNN_Model.input], concatOut)
  

此答案假设您现有的模型每个只有一个输入和输出。