Kyubyong / transformer

A TensorFlow Implementation of the Transformer: Attention Is All You Need
Apache License 2.0
4.28k stars 1.3k forks source link

自己学习率没有调节好 #164

Open glorymu opened 4 years ago

glorymu commented 4 years ago

model.py def train(): line140 memory, sents1, src_masks = self.encode(xs) line141 logits, preds, y, sents2 = self.decode(ys, memory, src_masks)

我们都知道编码器的每一个block的output输入到解码器对应的block当中,但是代码中的memory是最后一层block的输出,原作者直接作为了解码器每一层block的输入。这里应该错了吧,我觉得应该用一个列表存储编码器每一层的输出,然后将列表传给解码器,将对应的值传给解码端对应的block。 大家有没有啥看法?

wanna-fly commented 4 years ago

本来就是encoder 的最后一层输出作为输入送入到每一层decoder当中作为k和v

Ningshiqi commented 3 years ago

作者实现没错。。你去看论文。就是encoder最后一层,会输出到所有docoder中。

GuoshenLi commented 3 years ago

作者没错 是你的理解有问题

glorymu commented 3 years ago

嗯,我知道,我两种方法后来都尝试了,作者的效果会好一些,我的方式会快一些