当作者使用PyTorch 1时,我试图在Keras中重新实现本文2。这是网络架构:
到目前为止,我所做的是:
number_of_output_classes = 1
hidden_size = 100
direc = 2
lstm_layer=Bidirectional(LSTM(hidden_size, dropout=0.2, return_sequences=True))(combined) #shape after this step (None, 200)
#weighted sum and attention should be here
attention = Dense(hidden_size*direc, activation='linear')(lstm_layer) #failed trial
drop_out_layer = Dropout(0.2)(attention)
output_layer=Dense(1,activation='sigmoid')(drop_out_layer) #shape after this step (None, 1)
我想在LSTM之后包括关注层和最后一个FF层,但是由于尺寸和return_sequence = True选项,我遇到了错误。
答案 0 :(得分:0)
这是序列分类任务。序列分类是多对一映射,您可以在其中将多个时间步的输入标记为一个类。在这种情况下,输入的形状应为(batch_size,time_steps,通道),输出的形状应为(batch_size,通道)。如果LSTM类的return_sequences
自变量为True,则输出的形状为(batch_size, time_steps, channels)
。将其馈送到密集层和辍学层不会减少尺寸的数量。为了将维数减少为两个,您必须将最后一个LSTM层的return_sequences
参数设置为True
。就您而言
lstm_layer=Bidirectional(LSTM(hidden_size, dropout=0.2, return_sequences=False))(combined)