【发布时间】:2020-06-26 00:19:36
【问题描述】:
我有两种类型的输入序列,其中input1 包含 50 个值,input2 包含 25 个值。我尝试在功能 API 中使用 LSTM 模型组合这两种序列类型。但是,由于我的两个输入序列的长度不同,我想知道我目前正在做的是否是正确的方法。我的代码如下:
input1 = Input(shape=(50,1))
x1 = LSTM(100)(input1)
input2 = Input(shape=(25,1))
x2 = LSTM(50)(input2)
x = concatenate([x1,x2])
x = Dense(200)(x)
output = Dense(1, activation='sigmoid')(x)
model = Model(inputs=[input1,input2], outputs=output)
更具体地说,我想知道如何组合两个具有不同输入长度的 LSTM 层(在我的例子中是 50 和 25)。如果需要,我很乐意提供更多详细信息。
【问题讨论】:
-
你能澄清一下你想要合并两个 lstm 层的意思吗?你现在这样做的方式是连接输出,即将两个 LSTM 层的输出放入下一个密集层。那个 imo 似乎没有什么问题。
-
@JohannesAck 谢谢你的评论。我的意思是我的输入序列的长度是不同的(即 50 和 25)。此外,我的 LSTM 层中的节点数也不同。我想澄清它们是否会对
concatenate功能产生任何影响。期待您的来信:) -
@EmJ 由于您使用的是每个 LSTM 层的最后一个输出(即
return_sequences=False),因此连接将正常工作:它得到两个形状为(?, 100)和(?, 50)的输入并输出一个形状张量(?, 150)。换句话说,有了这个设置,两个输入序列的长度不会影响连接函数。
标签: python keras deep-learning classification lstm