Python 如何使用keras和tensorflow合并GoogleNet和ResNet

Python 如何使用keras和tensorflow合并GoogleNet和ResNet,python,tensorflow,keras,Python,Tensorflow,Keras,我想合并两个预先训练好的模型GoogleNet和ResNet。我只有这两种型号的转移学习代码: 来自tensorflow.keras.applications.inception\u v3导入接收v3 基本模型=接收v3(输入形状=(150,150,3),包括顶部=假,权重='imagenet') 有人能指导我如何合并这两个预先训练的模型吗? ------------------------------------------------------------------- #添加合并模型代码

我想合并两个预先训练好的模型GoogleNet和ResNet。我只有这两种型号的转移学习代码: 来自tensorflow.keras.applications.inception\u v3导入接收v3 基本模型=接收v3(输入形状=(150,150,3),包括顶部=假,权重='imagenet')

有人能指导我如何合并这两个预先训练的模型吗? ------------------------------------------------------------------- #添加合并模型代码和错误

   inputs = keras.Input(shape = training_set.image_shape)
   m_1 = base_model(inputs)
   m_2 = base_model_2(inputs)

   outputs = tf.concat([m_1,m_2], axis = 0)
   new_model = keras.Model(inputs, outputs)
-----------------------------------------------------------------------
Error code:
 InvalidArgumentError                      Traceback (most recent call last)
 /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in 
 _create_c_op(graph, node_def, inputs, control_inputs, op_def)
 1811   try:
 -> 1812     c_op = pywrap_tf_session.TF_FinishOperation(op_desc)
 1813   except errors.InvalidArgumentError as e:

InvalidArgumentError: Shape must be rank 4 but is rank 2 for '{{node 
concat_1}} = ConcatV2[N=2, T=DT_FLOAT, Tidx=DT_INT32] 
(inception_v3/mixed10/concat_2, sequential_13/dense_43/Sigmoid, 
concat_1/axis)' 
with input shapes: [?,3,3,2048], [?,1], [].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in 
_create_c_op(graph, node_def, inputs, control_inputs, op_def)
1813   except errors.InvalidArgumentError as e:
1814     # Convert to ValueError for backwards compatibility.
-> 1815     raise ValueError(str(e))
1816 
1817   return c_op

ValueError: Shape must be rank 4 but is rank 2 for '{{node concat_1}} = 
ConcatV2[N=2, T=DT_FLOAT, Tidx=DT_INT32](inception_v3/mixed10/concat_2, 
sequential_13/dense_43/Sigmoid, concat_1/axis)' with input shapes: 
[?,3,3,2048], [?,1], [].

通过合并2个预先培训的模型,您试图实现什么?您可以改为微调其中一个模型。@YosiPramajaya我实际上是在尝试合并模型本身,而不是微调它。您可以使用Keras函数API。我回答了类似的问题,试着看看它是否是你需要的:嗨,谢谢你的链接我尝试了以下代码:inputs=keras.Input(shape=training\u set.image\u shape)m\u 1=base\u model(inputs)m\u 2=base\u model\u 2(inputs)outputs=tf.concat([m\u 1,m\u 2],axis=0)new\u model=keras.model(inputs,outputs)但我得到了值错误(ValueError:Shape必须是秩4,但对于“{node concat_1}}}=ConcatV2[N=2,T=DT_FLOAT,Tidx=DT_INT32](inception_v3/mixed10/concat_2,sequential_13/densed_43/Sigmoid,concat_1/axis)来说是秩2,输入的形状:[?,3,32048],?,1]。)在注释中很难看到代码/错误日志。你能编辑它并把它放到问题中吗?
   inputs = keras.Input(shape = training_set.image_shape)
   m_1 = base_model(inputs)
   m_2 = base_model_2(inputs)

   outputs = tf.concat([m_1,m_2], axis = 0)
   new_model = keras.Model(inputs, outputs)
-----------------------------------------------------------------------
Error code:
 InvalidArgumentError                      Traceback (most recent call last)
 /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in 
 _create_c_op(graph, node_def, inputs, control_inputs, op_def)
 1811   try:
 -> 1812     c_op = pywrap_tf_session.TF_FinishOperation(op_desc)
 1813   except errors.InvalidArgumentError as e:

InvalidArgumentError: Shape must be rank 4 but is rank 2 for '{{node 
concat_1}} = ConcatV2[N=2, T=DT_FLOAT, Tidx=DT_INT32] 
(inception_v3/mixed10/concat_2, sequential_13/dense_43/Sigmoid, 
concat_1/axis)' 
with input shapes: [?,3,3,2048], [?,1], [].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in 
_create_c_op(graph, node_def, inputs, control_inputs, op_def)
1813   except errors.InvalidArgumentError as e:
1814     # Convert to ValueError for backwards compatibility.
-> 1815     raise ValueError(str(e))
1816 
1817   return c_op

ValueError: Shape must be rank 4 but is rank 2 for '{{node concat_1}} = 
ConcatV2[N=2, T=DT_FLOAT, Tidx=DT_INT32](inception_v3/mixed10/concat_2, 
sequential_13/dense_43/Sigmoid, concat_1/axis)' with input shapes: 
[?,3,3,2048], [?,1], [].