Python 在keras中连接两个CNN

Python 在keras中连接两个CNN,python,tensorflow,keras,Python,Tensorflow,Keras,我试图融合两个CNN,但当我使用concatenate时,我收到以下错误: Traceback (most recent call last): File "vggFace_MM.py", line 57, in <module> fuse_layer = concatenate([stream_1, stream_2]) File "/usr/local/lib/python2.7/dist-packages/keras/layers/merge.py", line

我试图融合两个CNN,但当我使用concatenate时,我收到以下错误:

Traceback (most recent call last):
  File "vggFace_MM.py", line 57, in <module>
    fuse_layer = concatenate([stream_1, stream_2])
  File "/usr/local/lib/python2.7/dist-packages/keras/layers/merge.py", line 508, in concatenate
    return Concatenate(axis=axis, **kwargs)(inputs)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 596, in __call__
    output = self.call(inputs, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/keras/layers/merge.py", line 283, in call
    return K.concatenate(inputs, axis=self.axis)
  File "/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py", line 1723, in concatenate
    return tf.concat([to_dense(x) for x in tensors], axis)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/array_ops.py", line 1075, in concat
    dtype=dtypes.int32).get_shape(
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 669, in convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/constant_op.py", line 176, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/constant_op.py", line 165, in constant
    tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape))
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_util.py", line 367, in make_tensor_proto
    _AssertCompatible(values, dtype)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_util.py", line 302, in _AssertCompatible
    (dtype.name, repr(mismatch), type(mismatch).__name__))
TypeError: Expected int32, got list containing Tensors of type '_Message' instead.

我使用的是VGFace,所以VG_model_1和vgg_model_2是相同的CNN,但每个CNN都有不同的输入。

我认为与其使用
串联
,实际上需要使用
合并

按照答案了解更多细节

有关
merge


为了更详细地阐述它,您需要为模型而不是CNN的层创建两个头部。 因此,
Model1
接受面部情绪数据作为输入,
Model2
接受其他类型的输入

因此,要创建这两个头部以提供组合输出,您需要创建第三个模型,该模型将合并这两个模型以提供单个组合输出

可以按如下方式进行

multi_modal = Sequential()
multi_modal.add(Merge([Model1, Model2], mode='concat'))

你能说说你想通过连接2个CNN实现什么吗?现在还不清楚您在这里想要实现什么,因为您已经尝试连接了两个没有意义的池层。它可以与此一起工作吗
fuse\u layer=Concatenate()([stream\u 1,stream\u 2])
--从keras导入连接层
。layers Import*
。你的keras版本是什么?是的,我正试图根据某些情绪对面部表情进行分类。在一个CNN里我有脸,而在另一个CNN里我有脸,但是正面化了。@Yu Yang我更新到了最新的TensorFlow版本,它成功了。谢谢嗨,阿努吉,我已经解决了。这和tensorflow版本有关。我更新到了最新的版本,效果很好。谢谢你所做的一切
multi_modal = Sequential()
multi_modal.add(Merge([Model1, Model2], mode='concat'))