Python 无法导入名称';合并';从';keras.layers';

Python 无法导入名称';合并';从';keras.layers';,python,keras,keras-layer,Python,Keras,Keras Layer,我尝试运行了一段代码,但发现Keras的合并层有问题。我正在使用Python3和keras 这是代码的反编码部分 将numpy作为np导入 作为pd进口熊猫 从keras.models导入顺序 从keras.layers导入LSTM、嵌入、时间分布、密集、重复向量、合并、激活 从keras.preprocessing导入图像,序列 作为腌菜进口cPickle def create_模型(self,ret_模型=False): 图像_模型=顺序() image_model.add(密集(嵌入尺寸

我尝试运行了一段代码,但发现
Keras
的合并层有问题。我正在使用Python3和keras

这是代码的反编码部分


将numpy作为np导入
作为pd进口熊猫
从keras.models导入顺序
从keras.layers导入LSTM、嵌入、时间分布、密集、重复向量、合并、激活
从keras.preprocessing导入图像,序列
作为腌菜进口cPickle
def create_模型(self,ret_模型=False):
图像_模型=顺序()
image_model.add(密集(嵌入尺寸,输入尺寸=4096,激活=relu'))
image_model.add(RepeatVector(self.max_length))
lang_模型=顺序()
lang_model.add(嵌入(self.vocab_大小,256,输入长度=self.max_长度))
lang_model.add(LSTM(256,返回序列=True))
lang_model.add(时间分布(密集(嵌入_DIM)))
模型=顺序()
添加(合并([image\u model,lang\u model],mode='concat'))
model.add(LSTM(1000,返回序列=False))
添加模型(密集型(自发声大小))
添加(激活('softmax'))
打印(“已创建模型!”)
这是错误的信息

from keras.layers import LSTM, Embedding, TimeDistributed, Dense, RepeatVector, Merge, Activation
ImportError: cannot import name 'Merge' from 'keras.layers'

Keras+2不支持合并。相反,您需要使用
串联
层:

merged = Concatenate()([x1, x2]) # NOTE: the layer is first constructed and then it's called on its input
或者它的等效功能接口
串联
(以小写字母
c
开头):


如果您对其他形式的合并感兴趣,例如添加、细分等,则可以使用相关层。有关合并层的全面列表,请参见。

谢谢您的回答。它几乎对我起了作用,只是当我这样应用它时:
model.add(Concatenate([word\u model,context\u model],mode=“dot”)
,我得到了以下错误:
TypeError:('Keyword argument not understanding:','mode')
有什么想法吗?@nigus21您的代码有两个问题(可能只有第二个与您的需要相关):1)您正在传递层的输入作为其参数(即,请注意使用串联大“C”或小“C”,以及我在回答中解释的它们之间的差异)。2)
模式
不再适用于Keras 2+。使用合适的图层(在您的情况下,可能是
Dot
图层)。
merged = concatenate([x1,x2]) # NOTE: the input of layer is passed as an argument, hence named *functional interface*