Spec-Zone.ru › PyTorch 2.14

Transformer

class torch.nn.Transformer(d_model=512, nhead=8, num_encoder_layers=6, num_decoder_layers=6, dim_feedforward=2048, dropout=0.1, activation=<function relu>, custom_encoder=None, custom_decoder=None, layer_norm_eps=1e-05, batch_first=False, norm_first=False, bias=True, device=None, dtype=None) [источник]

Базовый слой трансформера.

Этот слой Transformer реализует исходную архитектуру Transformer, описанную в статье Внимание — это всё, что вам нужно. Этот слой предназначен для использования в качестве эталонной реализации, помогающей понять основы, поэтому по сравнению с более новыми архитектурами Transformer он обладает лишь ограниченным набором возможностей. Учитывая быстрый темп развития архитектур, подобных Transformer, рекомендуем изучить этот учебник, чтобы построить эффективный слой трансформера из базовых блоков или использовать библиотеки более высокого уровня из экосистемы PyTorch.

Параметры:
  • d_model (int) – количество признаков, ожидаемое во входных данных кодировщика/декодировщика (по умолчанию=512).
  • nhead (int) – количество голов в моделях многоголового внимания (по умолчанию=8).
  • num_encoder_layers (int) – количество подслоёв кодировщика в кодировщике (по умолчанию=6).
  • num_decoder_layers (int) – количество подслоёв декодировщика в декодировщике (по умолчанию=6).
  • dim_feedforward (int) – размерность модели сети прямого распространения (по умолчанию=2048).
  • dropout (float) – значение dropout (по умолчанию=0.1).
  • activation (str | Callable[[Tensor], Tensor]) – функция активации промежуточного слоя кодировщика/декодировщика; может быть строкой (“relu” или “gelu”) или унарной вызываемой функцией. По умолчанию: relu
  • custom_encoder (Any | None) – пользовательский кодировщик (по умолчанию=None).
  • custom_decoder (Any | None) – пользовательский декодировщик (по умолчанию=None).
  • layer_norm_eps (float) – значение eps в компонентах нормализации слоя (по умолчанию=1e-5).
  • batch_first (bool) – Если True, входные и выходные тензоры передаются в формате (batch, seq, feature). По умолчанию: False (seq, batch, feature).
  • norm_first (bool) – если True, слои кодировщика и декодировщика выполняют LayerNorm до других операций внимания и прямого распространения, иначе — после них. По умолчанию: False (после).
  • bias (bool) – Если установлено значение False, слои Linear и LayerNorm не будут обучать аддитивное смещение. По умолчанию: True.

Примеры

>>> transformer_model = nn.Transformer(
...     nhead=16, num_encoder_layers=12, batch_first=True
... )
>>> src = torch.rand((32, 10, 512))
>>> tgt = torch.rand((32, 20, 512))
>>> out = transformer_model(src, tgt)

Примечание: полный пример применения модуля nn.Transformer для языковой модели на уровне слов доступен в pytorch/examples

forward(src, tgt, src_mask=None, tgt_mask=None, memory_mask=None, src_key_padding_mask=None, tgt_key_padding_mask=None, memory_key_padding_mask=None, src_is_causal=None, tgt_is_causal=None, memory_is_causal=False) [источник]

Принимает и обрабатывает маскированные последовательности источника/цели.

Примечание

Если для любого из аргументов [src/tgt/memory]_mask передан логический тензор, позициям со значением True запрещено участвовать во внимании; это противоположно определению attn_mask в torch.nn.functional.scaled_dot_product_attention().

Параметры:
  • src (Tensor) – последовательность для кодировщика (обязательный параметр).
  • tgt (Tensor) – последовательность для декодировщика (обязательный параметр).
  • src_mask (Tensor | None) – аддитивная маска для последовательности src (необязательный параметр).
  • tgt_mask (Tensor | None) – аддитивная маска для последовательности tgt (необязательный параметр).
  • memory_mask (Tensor | None) – аддитивная маска для выхода кодировщика (необязательный параметр).
  • src_key_padding_mask (Tensor | None) – маска Tensor для ключей src в каждом элементе пакета (необязательный параметр).
  • tgt_key_padding_mask (Tensor | None) – маска Tensor для ключей tgt в каждом элементе пакета (необязательный параметр).
  • memory_key_padding_mask (Tensor | None) – маска Tensor для ключей памяти в каждом элементе пакета (необязательный параметр).
  • src_is_causal (bool | None) – Если задано, применяет причинную маску, как в src_mask. По умолчанию: None; выполняется попытка обнаружить причинную маску. Предупреждение: src_is_causal указывает, что src_mask является причинной маской. Неверные подсказки могут привести к некорректному выполнению, в том числе нарушить прямую и обратную совместимость.
  • tgt_is_causal (bool | None) – Если задано, применяет причинную маску, как в tgt_mask. По умолчанию: None; выполняется попытка обнаружить причинную маску. Предупреждение: tgt_is_causal указывает, что tgt_mask является причинной маской. Неверные подсказки могут привести к некорректному выполнению, в том числе нарушить прямую и обратную совместимость.
  • memory_is_causal (bool) – Если задано, применяет причинную маску, как в memory_mask. По умолчанию: False. Предупреждение: memory_is_causal указывает, что memory_mask является причинной маской. Неверные подсказки могут привести к некорректному выполнению, в том числе нарушить прямую и обратную совместимость.
Тип возвращаемого значения:

Tensor

Форма:
  • src: (S,E)(S, E) для входных данных без пакета, (S,N,E)(S, N, E) если batch_first=False или (N, S, E) если batch_first=True.
  • tgt: (T,E)(T, E) для входных данных без пакета, (T,N,E)(T, N, E) если batch_first=False или (N, T, E) если batch_first=True.
  • src_mask: (S,S)(S, S) или (N⋅num_heads,S,S)(N\cdot\text{num\_heads}, S, S).
  • tgt_mask: (T,T)(T, T) или (N⋅num_heads,T,T)(N\cdot\text{num\_heads}, T, T).
  • memory_mask: (T,S)(T, S).
  • src_key_padding_mask: (S)(S) для входных данных без пакета, в противном случае (N,S)(N, S).
  • tgt_key_padding_mask: (T)(T) для входных данных без пакета, в противном случае (N,T)(N, T).
  • memory_key_padding_mask: (S)(S) для входных данных без пакета, в противном случае (N,S)(N, S).

Примечание: [src/tgt/memory]_mask гарантирует, что позиции ii разрешено обращаться к немаскированным позициям. Если передан BoolTensor, позициям со значением True запрещено обращаться к другим позициям, а значения False остаются без изменений. Если передан FloatTensor, он будет добавлен к весу внимания. [src/tgt/memory]_key_padding_mask указывает элементы ключа, которые следует игнорировать при вычислении внимания. Если передан BoolTensor, позиции со значением True будут игнорироваться, а позиции со значением False останутся без изменений.

  • output: (T,E)(T, E) для входных данных без пакета, (T,N,E)(T, N, E) если batch_first=False или (N, T, E) если batch_first=True.

Примечание: из-за архитектуры многоголового внимания в модели трансформера длина выходной последовательности трансформера совпадает с длиной входной последовательности (то есть целевой последовательности) декодировщика.

где SS — длина исходной последовательности, TT — длина целевой последовательности, NN — размер пакета, EE — количество признаков

Примеры

>>> output = transformer_model(
...     src, tgt, src_mask=src_mask, tgt_mask=tgt_mask
... )
static generate_square_subsequent_mask(sz, device=None, dtype=None) [источник]

Создаёт квадратную причинную маску для последовательности.

Маскированные позиции заполняются значением float(‘-inf’). Немаскированные позиции заполняются значением float(0.0).

Тип возвращаемого значения:

Tensor

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.Transformer.html

Spec-Zone.ru

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