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является причинной маской. Неверные подсказки могут привести к некорректному выполнению, в том числе нарушить прямую и обратную совместимость.
- Тип возвращаемого значения:
- Форма:
-
- src: для входных данных без пакета, если
batch_first=Falseили(N, S, E)еслиbatch_first=True. - tgt: для входных данных без пакета, если
batch_first=Falseили(N, T, E)еслиbatch_first=True. - src_mask: или .
- tgt_mask: или .
- memory_mask: .
- src_key_padding_mask: для входных данных без пакета, иначе .
- tgt_key_padding_mask: для входных данных без пакета, иначе .
- memory_key_padding_mask: для входных данных без пакета, иначе .
Примечание: маска [src/tgt/memory]_mask гарантирует, что позиции разрешено учитывать немаскированные позиции. Если передан BoolTensor, позициям со значением
Trueзапрещено учитывать другие позиции, а значенияFalseостаются без изменений. Если передан FloatTensor, он будет добавлен к весу внимания. Маска [src/tgt/memory]_key_padding_mask указывает элементы ключа, которые следует игнорировать при вычислении внимания. Если передан BoolTensor, позиции со значениемTrueбудут игнорироваться, а позиции со значениемFalseостанутся без изменений.- output: для входных данных без пакета, если
batch_first=Falseили(N, T, E)еслиbatch_first=True.
Примечание: из-за архитектуры многоголового внимания в модели Transformer длина выходной последовательности Transformer совпадает с длиной входной последовательности декодировщика (то есть целевой последовательности).
где — длина исходной последовательности, — длина целевой последовательности, — размер пакета, — количество признаков
- src: для входных данных без пакета, если
Примеры
>>> 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).
- Тип возвращаемого значения:
© 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