Keras:Merge/Concatenate Layer:TypeError:\uyu init_uku()为参数“axis”获取了多个值

2024-04-23 22:07:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了以下网络。其思想是将leftright的输出组合起来,然后发送到LSTM模型。在

EMBED_DIM = 4
look_back = 6
feature_num = 2
ENCODE_DIM = 676

left = Sequential()
left.add(Dense(EMBED_DIM,input_shape=(ENCODE_DIM,)))
left.add(RepeatVector(look_back))
left.add(Reshape((look_back,EMBED_DIM)))

right = Sequential()
right.add(Lambda(lambda x: x,input_shape=(look_back,feature_num)))


# create and fit the LSTM network
model = Sequential()
model.add(Concatenate([left, right], axis = 2,input_shape=(look_back, EMBED_DIM + feature_num) ))
model.add(LSTM(8, input_shape=(look_back,feature_num + EMBED_DIM)))

model.add(Dense(2))
model.compile(loss='mean_squared_error', optimizer='adam')

我尝试连接来自左和右的输出,然后将新的张量发送到LSTM模型。在

但是,我得到了以下错误:


^{pr2}$

你知道我做错了什么吗?我可以添加Concatenate层作为模型的第一层吗?谢谢!在


Tags: 模型rightaddinputmodelbackembedleft
1条回答
网友
1楼 · 发布于 2024-04-23 22:07:07

序列模型并不意味着有分支。使用函数式API模型。在

让我们从左右两侧得到“张量”:

leftOutput = left.output    
rightOutput = right.output

现在,Concatenate是一个遵循所有其他层相同逻辑的层。(首先创建它,然后用输入张量调用它):

^{pr2}$

让我们将模型的其余部分也保留为函数API:

output = LSTM(8)(output)
output = Dense(2)(output)

现在我们创建模型,告诉它输入和输出是什么:

inputTensorLeft = left.input
inputTensorRight = right.input    

fullModel = Model([inputTensorLeft,inputTensorRight], output)

请注意,您最终得到了三个模型,但其中一个模型包含其他两个模型。它们的重量相同。如果你在训练一条共享路径,那么训练一条可以训练其他人。在

相关问题 更多 >