首页 > 解决方案 > 连接两个预训练模型错误:名称“input_1”在模型中被使用了 2 次

问题描述

我正在尝试在 Keras 中连接两个具有相同名称的预训练模型。到目前为止,我已经重命名了所有图层,如下所示:

  model1 = load_model('./new/CNN_Level1_2Dense_1024ML_Prep_ALL')
  model1.input._name = model1.input.name + '_1'
  for layer in model1.layers:
      layer._name = layer.name + str("_1")
      
  model1._name = 'pretrained_model1'

  print('=====================================')

  model2 = load_model('./new/CNN_Level1.1_2Dense_1024ML_Prep_ALL')
  model2.input._name = model2.input.name + '_2'
  for layer in model2.layers:
      layer._name = layer.name + str("_2")

  model2._name = 'pretrained_model2'
  
  out1 = model1.output
  out2 = model2.output

  m_model = concatenate([out1, out2])
  relu_dense = Dense(19, activation='relu')(m_model)
  output = Dense(19, activation='softmax')(relu_dense)
  
  merged_model = Model(inputs=[model1.input,model2.input], outputs=output)

但我仍然收到此错误:

文件“Ali_text_classification-Copy1.py”,第 196 行,train_network merge_model = Model(inputs=[model1.input,model2.input], outputs=output) 文件“/root/.local/lib/python3.6/site- packages/tensorflow/python/training/tracking/base.py”,第 517 行,在 _method_wrapper 结果 = 方法(self,*args,**kwargs)文件“/root/.local/lib/python3.6/site-packages /tensorflow/python/keras/engine/functional.py”,第 120 行,在init中 self._init_graph_network(输入,输出)文件“/root/.local/lib/python3.6/site-packages/tensorflow/python/training/tracking/base.py”,第517行,在_method_wrapper结果=方法(自我, *args, **kwargs) 文件“/root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/functional.py”,第 204 行,在 _init_graph_network self.inputs, self.outputs ) 文件“/root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/functional.py”,第 1001 行,在 _map_graph_network str(all_names.count(name)) + ' 次该模型。' ValueError:名称“input_1”在模型中使用了 2 次。所有图层名称都应该是唯一的。

我怎样才能解决这个问题?

标签: pythontensorflowkerasneural-networkconcatenation

解决方案


截至 2021 年 4 月,根据此处的一种解释,我能够将 FPN 模型修改为 Siamese FPN。链接如下:

https://github.com/asifpatankar/Siamese_FPN

消失2次错误。也许它可以帮助!


推荐阅读