Python 在keras中连接两个CNN
我试图融合两个CNN,但当我使用concatenate时,我收到以下错误: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
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'))