为何PyTorch Transformer不支持编解码器输出维度不同?如何实现?
PyTorch Transformer的维度通用性疑问
PyTorch Transformer接收d_model参数。
论坛相关讨论提到:
Transformer原论文的设计并非基于编码器与解码器输出特征维度不同的情况
这一说法是正确的,但不应限制PyTorch的实现更具通用性。尽管原论文中所有数据流的维度均为d_model,但这并非理论上的限制。
我想了解PyTorch的Transformer在此方面不够通用的原因,肯定存在合理的考量
我的理解尝试
Multi-Head Attention接收维度相互独立的query、key和value矩阵。
在我看来,仅这一点就应该允许Transformer模型的编码器拥有一种输出尺寸(因残差连接,与输入尺寸一致),而解码器的输入和输出拥有另一种尺寸(同样因残差连接)。
再看解码器中的Multi-Head Attention层,它接收来自解码器的Q,以及来自编码器的K、V。我不明白为何K、V的维度不能与Q不同,即便存在残差连接。我们只需设置d_Q==d_decoder==layer_output_dim和d_K==d_V==encoder_output_dim,一切应该仍能正常工作,因为Multi-Head Attention本应处理不同的嵌入尺寸。
我忽略了什么?或者说,如何在不彻底重写的情况下实现更通用的Transformer?

内容的提问来源于stack exchange,提问作者Gulzar
相关产品推荐
相关产品推荐

