【发布时间】:2021-04-01 16:02:51
【问题描述】:
我正在尝试为序列到序列模型实现双向 LSTM。我已经对我的序列进行了一次热编码,共有 12 个特征。输入为 11 步,输出为 23 步。首先,我编写了这个 LSTM 实现,它使用第一个 LSTM 作为编码器,第二个作为解码器。
model = Sequential()
model.add(LSTM(75, input_shape=(11, 12)))
model.add(RepeatVector(23))
model.add(LSTM(50, return_sequences=True))
model.add(TimeDistributed(Dense(12, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
X, y = generate_data(1, taskset, trainset)
model.fit(X, y, epochs=1, batch_size=32, verbose=1)
然后我尝试将其转换为双向 LSTM,如下所示:
model = Sequential()
model.add(Bidirectional(LSTM(75, return_sequences=True), input_shape=(11,12), merge_mode='concat'))
model.add(Bidirectional(LSTM(50, return_sequences=True)))
model.add(TimeDistributed(Dense(12, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics= ['accuracy'])
model.summary()
X, y = generate_data(1, taskset, trainset)
model.fit(X, y, epochs=1, batch_size=32, verbose=1)
目标是使用第一个双向 LSTM 作为编码器,第二个双向 LSTM 作为解码器。我在双向实现中删除了RepeatVector,因为它给了我一个尺寸错误(需要dim=2,收到dim=3)。使用当前的双向 LSTM,我收到此错误:
ValueError: Shapes (None, 23, 12) and (None, 11, 12) are incompatible
任何有关修复双向 LSTM 实现的帮助将不胜感激!
【问题讨论】:
标签: python tensorflow keras lstm bidirectional