Bahdanau 注意力

我的也是,变快了一点点,但是损失上变化不大,GRU换成LSTM之后变化也不大

分享一下笔记 希望对各位有帮助

我的方法是,除了改rnn算法为LSTM,再加上改Seq2SeqAttentionDecoder里forward的每一步的query = torch.unsqueeze(hidden_state[-1], dim=1)query=torch.unsqueeze(hidden_state[0][-1], dim=1),其他不变,好像也行,但不太清楚为啥,有人可以解释一下吗。

调用train_seq2seq,出现Y_hat, _ = net(X, dec_input, X_valid_len)
ValueError: too many values to unpack (expected 2)
这个要怎么解呢?

因为LSTM的输入是X和(H_t-1, C_t-1),输出是Out和(H_t, C_t),其中H_t表示t时刻的隐状态,C_t表示t时刻的细胞状态,那么hidden_state[0][-1]其实就是H_t的最后一个,也就是t时刻最后一层的隐状态,还是比较符合这本书的表达的。

是的,代码里是用最终时间步,我还理解了好久说怎么和表述的不一样