LSTM之后具有return_sequence = True的Keras密集层

时间:2019-03-19 02:24:25

标签: python keras deep-learning nlp

当作者使用PyTorch 1时,我试图在Keras中重新实现本文2。这是网络架构: enter image description here 到目前为止,我所做的是:

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选项,我遇到了错误。

1 个答案:

答案 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)