使用Keras函数式API中的Concatenate层出现ValueError问题

12
在这里进行了一些搜索,但我仍然找不到解决方案。我刚开始使用Keras,如果有解决方案而我实际上没有理解它与我的问题的关系,请谅解。
我正在使用Keras 2 / Functional API 制作一个小型的RNN,并且我无法使Concatenate层正常工作。
以下是我的结构:
inputSentence = Input(shape=(30, 91))
sentenceMatrix = LSTM(91, return_sequences=True, input_shape=(30, 91))(inputSentence)

inputDeletion = Input(shape=(30, 1))
deletionMatrix = (LSTM(30, return_sequences=True, input_shape=(30, 1)))(inputDeletion)

fusion = Concatenate([sentenceMatrix, deletionMatrix])
fusion = Dense(122, activation='relu')(fusion)
fusion = Dense(102, activation='relu')(fusion)
fusion = Dense(91, activation='sigmoid')(fusion)

F = Model(inputs=[inputSentence, inputDeletion], outputs=fusion)

以下是错误信息:

ValueError: Unexpectedly found an instance of type `<class 'keras.layers.merge.Concatenate'>`. Expected a symbolic tensor instance.

如果有助于更好地理解,以下是完整的历史记录:

Using TensorFlow backend.
    str(inputs) + '. All inputs to the layer '
ValueError: Layer dense_1 was called with an input that isn't a symbolic tensor. Received type: <class 'keras.layers.merge.Concatenate'>. Full input: [<keras.layers.merge.Concatenate object at 0x00000000340DC4E0>]. All inputs to the layer should be tensors.
self.assert_input_compatibility(inputs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 425, in assert_input_compatibility
fusion = Dense(122, activation='relu')(fusion)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 552, in __call__
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 419, in assert_input_compatibility
K.is_keras_tensor(x)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 392, in is_keras_tensor
raise ValueError('Unexpectedly found an instance of type `' + str(type(x)) + '`. '
ValueError: Unexpectedly found an instance of type `<class 'keras.layers.merge.Concatenate'>`. Expected a symbolic tensor instance.

我正在使用Windows 7上的Python 3.6和Spyder 3.1.4。今天早晨我使用pip升级了TensorFlow和Keras。

感谢提供任何帮助!

2个回答

41

尝试:

fusion = concatenate([sentenceMatrix, deletionMatrix])

Concatenate 用于 Sequential 模型,而 concatenate 用于 Functional API


1
连接 vs 连接再次提醒我,为什么大小写敏感是个好主意? - Peter Cibulskis

4

尝试

fusion = Concatenate()([sentenceMatrix, deletionMatrix])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接