Spec-Zone.ru › PyTorch 2.14

Transformer

class torch.nn.modules.transformer.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) [source]

Базовый слой Transformer.

Этот слой Transformer реализует исходную архитектуру Transformer, описанную в статье Attention Is All You Need. Этот слой предназначен для использования в качестве справочной реализации, помогающей понять основы, поэтому его функциональность ограничена по сравнению с более новыми архитектурами Transformer. Учитывая быстрые темпы развития архитектур, подобных Transformer, рекомендуем изучить этот учебник, чтобы создать эффективный слой Transformer из базовых компонентов или воспользоваться высокоуровневыми библиотеками из экосистемы PyTorch.

Параметры:
  • d_model (int) – количество ожидаемых признаков во входных данных кодировщика/декодировщика (по умолчанию=512).
  • nhead (int) – количество голов в моделях multiheadattention (по умолчанию=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) [source]

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

Примечание

Если для любого из аргументов [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 для ключей memory в каждом элементе пакета (необязательный).
  • 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.

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

где 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) [source]

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

Замаскированные позиции заполняются значением 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.modules.transformer.Transformer.html

Spec-Zone.ru

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