我创建了以下网络。其思想是将left
和right
的输出组合起来,然后发送到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模型。在
但是,我得到了以下错误:
你知道我做错了什么吗?我可以添加Concatenate
层作为模型的第一层吗?谢谢!在
序列模型并不意味着有分支。使用函数式API模型。在
让我们从左右两侧得到“张量”:
现在,
^{pr2}$Concatenate
是一个遵循所有其他层相同逻辑的层。(首先创建它,然后用输入张量调用它):让我们将模型的其余部分也保留为函数API:
现在我们创建模型,告诉它输入和输出是什么:
请注意,您最终得到了三个模型,但其中一个模型包含其他两个模型。它们的重量相同。如果你在训练一条共享路径,那么训练一条可以训练其他人。在
相关问题 更多 >
编程相关推荐