作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在理解变压器方面遇到了困难。一切都在一点一点地变得清晰,但让我头疼的一件事是
src_mask 和 src_key_padding_mask 之间有什么区别,它在编码器层和解码器层的前向函数中作为参数传递。
https://pytorch.org/docs/master/_modules/torch/nn/modules/transformer.html#Transformer
最佳答案
我必须说 PyTorch 实现有点令人困惑,因为它包含太多掩码参数。但是我可以阐明您所指的两个掩码参数。 src_mask
和 src_key_padding_mask
都用于 MultiheadAttention
机制。根据 MultiheadAttention 的文档:
key_padding_mask – if provided, specified padding elements in the key will be ignored by the attention.
attn_mask – 2D or 3D mask that prevents attention to certain positions.
Masked MultiheadAttention
,另一种称为常规
MultiheadAttention
。为了适应这两种技术,PyTorch 在其 MultiheadAttention 实现中使用了上述两个参数。
attn_mask
和 key_padding_mask
用于编码器的 MultiheadAttention
和解码器的 Masked MultiheadAttention
。 memory_mask
用于解码器的 MultiheadAttention
机制,正如 here 所指出的。 src_mask
用于阻止特定位置的参与,然后
key_padding_mask
用于阻止参与填充 token 。
关于pytorch - src_mask 和 src_key_padding_mask 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62170439/
我在理解变压器方面遇到了困难。一切都在一点一点地变得清晰,但让我头疼的一件事是 src_mask 和 src_key_padding_mask 之间有什么区别,它在编码器层和解码器层的前向函数中作为参
我是一名优秀的程序员,十分优秀!