首页 > 解决方案 > 合并 Keras 模型:Keras 可以自动忽略名称或重新标记它们吗?

问题描述

我正在尝试在 Keras 中合并两个顺序模型。代码如下,取自这个答案

sequential_1 = [keras.layers.Dense(200, input_shape = (784,),activation=tf.nn.relu),
                keras.layers.Dense(50, activation=tf.nn.relu)] 

model_1 = keras.Sequential(sequential_1)

sequential_2 = [keras.layers.Dense(784, input_shape = (784,), activation=tf.nn.relu),
                keras.layers.Dense(300, activation=tf.nn.relu)] 

model_2 = keras.Sequential(sequential_1)

collective = Concatenate()([model_1.output, model_2.output])

logits = keras.layers.Dense(10, tf.nn.softmax)(collective) 

combined = Model(inputs = [model_1.input, model_2.input], outputs = [logits])

但是,我收到此错误:

 The name "dense_4_input" is used 2 times in the model. All layer names should be unique.

这可能是因为如果我不提供名称,keras 会自动命名图层。但是,由于各种原因,我不想在合并两个模型之前必须不断地命名我的所有层。

有没有一种方法可以合并这些模型而不会出现不涉及手动提供图层名称的错误?有没有办法让 keras 自动为我重命名所有图层名称?

更新:即使我手动重新标记所有图层以具有不同的名称,我似乎仍然会收到此错误。我究竟做错了什么?

标签: tensorflowmachine-learningkeras

解决方案


你应该充分使用Functional API,而不是混合使用Sequential API和Functional API,那么你就不会有这个问题了。使用功能 API 也可以更轻松地进行模型管理和构建。


推荐阅读