一段时间以来一直试图解决这个问题。我发现了这个类似的问题,但我认为提议的答案实际上并没有解决这个问题。
在编码器/解码器 Transformer 的推理模式下,我的理解是我们不会预先填充解码器输入序列以匹配编码器序列长度(即传入[start_id,]
而不传入[start_id, pad_id, pad_id, ...]
)
我可能会遗漏一些东西,但是当我不预填充时,注意机制无法正确计算矩阵乘法,因为解码器输入的 seq_length = 1,而编码器 seq_length > 1 ( T
)。作为参考(参见附图),我在每个步骤中识别了张量形状,您可以看到在给定不兼容的张量形状的情况下无法执行最后一个 matmul 步骤的位置。
我缺少什么?我应该预填充解码器输入吗?或者我是否截断编码器输出以匹配解码器长度?还有别的事吗?