MultiheadAttention
-
class torch.ao.nn.quantizable.MultiheadAttention(embed_dim, num_heads, dropout=0.0, bias=True, add_bias_kv=False, add_zero_attn=False, kdim=None, vdim=None, batch_first=False, device=None, dtype=None)[исходный код] -
-
dequantize()[исходный код] -
Вспомогательная функция для преобразования квантованного MHA обратно в формат с плавающей точкой.
Это необходимо, поскольку преобразовать веса из формата, используемого в квантованной версии, обратно в формат с плавающей точкой нетривиально.
-
forward(query, key, value, key_padding_mask=None, need_weights=True, attn_mask=None, average_attn_weights=True, is_causal=False)[исходный код] -
- Примечание::
-
Дополнительную информацию см. в
forward()
- Параметры:
-
- query (Tensor) – отображение запроса и набора пар ключ-значение в выходные данные. Дополнительные сведения см. в статье «Attention Is All You Need».
- key (Tensor) – отображение запроса и набора пар ключ-значение в выходные данные. Дополнительные сведения см. в статье «Attention Is All You Need».
- value (Tensor) – отображение запроса и набора пар ключ-значение в выходные данные. Дополнительные сведения см. в статье «Attention Is All You Need».
- key_padding_mask (Tensor | None) – если указана, заданные элементы дополнения в ключе будут игнорироваться механизмом внимания. Если передана двоичная маска и значение равно True, соответствующее значение в слое внимания будет игнорироваться.
- need_weights (bool) – возвращать attn_output_weights.
- attn_mask (Tensor | None) – двумерная или трёхмерная маска, запрещающая обращать внимание на определённые позиции. Двумерная маска будет распространена на все элементы пакета, тогда как трёхмерная маска позволяет задать отдельную маску для элементов каждого пакета.
- Тип возвращаемого значения:
- Формы:
-
- Входные данные:
- query: , где L — длина целевой последовательности, N — размер пакета, E — размерность вложения. , если
batch_firstравноTrue. - key: , где S — длина исходной последовательности, N — размер пакета, E — размерность вложения. , если
batch_firstравноTrue. - value: , где S — длина исходной последовательности, N — размер пакета, E — размерность вложения. , если
batch_firstравноTrue. - key_padding_mask: , где N — размер пакета, S — длина исходной последовательности. Если передан BoolTensor, позиции со значением
Trueбудут игнорироваться, а позиции со значениемFalseостанутся без изменений. - attn_mask: двумерная маска , где L — длина целевой последовательности, S — длина исходной последовательности. Трёхмерная маска , где N — размер пакета, L — длина целевой последовательности, S — длина исходной последовательности. attn_mask гарантирует, что позиция i может обращать внимание на незамаскированные позиции. Если передан BoolTensor, позициям со значением
Trueзапрещено обращать внимание, а значенияFalseостаются без изменений. Если передан FloatTensor, он будет добавлен к весам внимания. - is_causal: если указано, применяет причинную маску в качестве маски внимания. Не может использоваться одновременно с attn_mask. Значение по умолчанию:
False. - average_attn_weights: если значение истинно, указывает, что возвращаемые
attn_weightsследует усреднить по головам. В противном случаеattn_weightsвозвращаются отдельно для каждой головы. Обратите внимание, что этот флаг действует только приneed_weights=True.. Значение по умолчанию: True (то есть веса усредняются по головам) - Выходные данные:
- attn_output: , где L — длина целевой последовательности, N — размер пакета, E — размерность вложения. , если
batch_firstравноTrue. - attn_output_weights: если
average_attn_weights=True, возвращает усреднённые по головам веса внимания формы , где N — размер пакета, L — длина целевой последовательности, S — длина исходной последовательности. Еслиaverage_attn_weights=False, возвращает веса внимания для каждой головы формы .
-
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.ao.nn.quantizable.MultiheadAttention.html