Spec-Zone.ru › PyTorch 2.14

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) – двумерная или трёхмерная маска, запрещающая обращать внимание на определённые позиции. Двумерная маска будет распространена на все элементы пакета, тогда как трёхмерная маска позволяет задать отдельную маску для элементов каждого пакета.
Тип возвращаемого значения:

tuple[Tensor, Tensor | None]

Формы:
  • Входные данные:
  • query: (L,N,E)(L, N, E), где L — длина целевой последовательности, N — размер пакета, E — размерность вложения. (N,L,E)(N, L, E), если batch_first равно True.
  • key: (S,N,E)(S, N, E), где S — длина исходной последовательности, N — размер пакета, E — размерность вложения. (N,S,E)(N, S, E), если batch_first равно True.
  • value: (S,N,E)(S, N, E), где S — длина исходной последовательности, N — размер пакета, E — размерность вложения. (N,S,E)(N, S, E), если batch_first равно True.
  • key_padding_mask: (N,S)(N, S), где N — размер пакета, S — длина исходной последовательности. Если передан BoolTensor, позиции со значением True будут игнорироваться, а позиции со значением False останутся без изменений.
  • attn_mask: двумерная маска (L,S)(L, S), где L — длина целевой последовательности, S — длина исходной последовательности. Трёхмерная маска (N∗numheads,L,S)(N*num_heads, 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)(L, N, E), где L — длина целевой последовательности, N — размер пакета, E — размерность вложения. (N,L,E)(N, L, E), если batch_first равно True.
  • attn_output_weights: если average_attn_weights=True, возвращает усреднённые по головам веса внимания формы (N,L,S)(N, L, S), где N — размер пакета, L — длина целевой последовательности, S — длина исходной последовательности. Если average_attn_weights=False, возвращает веса внимания для каждой головы формы (N,numheads,L,S)(N, num_heads, L, S).

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API