【问题标题】:Keras - Merging layers - Keras 2.0Keras - 合并图层 - Keras 2.0
【发布时间】:2017-11-26 08:43:36
【问题描述】:

我正在尝试合并两个网络。我可以通过执行以下操作来完成此操作:

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.

谁能告诉我如何让它工作的语法?

【问题讨论】:

  • 您能给我们提供一个完整的模型定义吗?

标签: keras keras-layer


【解决方案1】:

不要对带有分支的模型使用顺序模型。

使用函数式 API:

from keras.models import Model  

您使用Concatenate 层是对的,但您必须将“张量”传递给它。首先创建它,然后使用输入张量调用它(这就是为什么有两个括号):

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

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

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

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

【讨论】:

  • 这很好,如果我想为这个模型添加更多层怎么办?我试过这个:model.add(Dense(22, activation='softmax', name='final_dense')) 它给了我AttributeError: 'Model' object has no attribute 'add'
  • 创建层并为其提供输入以获得输出:denseOut = Dense(22,activation='softmax',name='final_dense')(concatOut) --- 你的模型将类似于model = Model([CNN_Model.input, RNN_Model.input], denseOut)
猜你喜欢
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多