TransformerEncoderLayer
-
class torch.nn.TransformerEncoderLayer(d_model, nhead, dim_feedforward=2048, dropout=0.1, activation=<function relu>, layer_norm_eps=1e-05, batch_first=False, norm_first=False, device=None, dtype=None)[source] -
TransformerEncoderLayer состоит из блоков самовнимания и прямого перехода. Этот стандартный блок кодировщика основан на статье «Внимание — это всё, что вам нужно». Ашиш Васвани, Ноам Шазер, Ники Пармар, Якоб Ускёрит, Ллион Джонс, Айдан Н. Гомес, Лукаш Кайзер и Илья Полосухин. 2017. Внимание — это всё, что вам нужно. В «Advances in Neural Information Processing Systems», страницы 6000-6010. Пользователи могут изменять или реализовывать его по-другому во время применения.
- Параметры:
-
- d_model (int) – число ожидаемых признаков на входе (необходимо).
- nhead (int) – количество головок в моделях многоголового внимания (необходимо).
- dim_feedforward (int) – размерность модели прямого перехода (по умолчанию 2048).
- dropout (float) – значение дропаута (по умолчанию 0.1).
- activation (Union[str, Callable[[Tensor], Tensor]]) – функция активации промежуточного слоя, может быть строкой (“relu” или “gelu”) или унарной вызываемой функцией. По умолчанию: relu
- layer_norm_eps (float) – значение eps в компонентах нормализации по слоям (по умолчанию 1e-5).
-
batch_first (bool) – Если
True, то входные и выходные тензоры предоставляются как (batch, seq, feature). По умолчанию:False(seq, batch, feature). -
norm_first (bool) – если
True, нормализация по слоям выполняется до операций внимания и прямого перехода соответственно. В противном случае она выполняется после. По умолчанию:False(после).
- Примеры::
-
>>> encoder_layer = nn.TransformerEncoderLayer(d_model=512, nhead=8) >>> src = torch.rand(10, 32, 512) >>> out = encoder_layer(src)
-
Alternatively, when batch_first is True: -
>>> encoder_layer = nn.TransformerEncoderLayer(d_model=512, nhead=8, batch_first=True) >>> src = torch.rand(32, 10, 512) >>> out = encoder_layer(src)
- Быстрый путь:
-
forward() будет использовать специальную оптимизированную реализацию, если выполнены все следующие условия:
- Либо вычисление градиента отключено (используя
torch.inference_modeилиtorch.no_grad) или нет тензорного аргументаrequires_grad. - Обучение отключено (используя
.eval()) - batch_first —
Trueи вход является пакетным (т.е.,src.dim() == 3) - activation — одно из:
"relu","gelu",torch.functional.relu, илиtorch.functional.gelu. - не более одного из
src_maskиsrc_key_padding_maskпередано - если src — это NestedTensor, ни
src_maskниsrc_key_padding_maskне передано - два экземпляра
LayerNormимеют согласованное значениеeps(это будет естественным образом происходить, если пользователь не изменил одно без изменения другого)
Если используется оптимизированная реализация, для
srcможно передать NestedTensor для более эффективного представления заполнения, чем использование маски заполнения. В этом случае будет возвращён NestedTensor, и можно ожидать дополнительного ускорения, пропорционального доле ввода, которая является заполнением. - Либо вычисление градиента отключено (используя
-
forward(src, src_mask=None, src_key_padding_mask=None)[source] -
Пропускает вход через блок кодировщика.
- Параметры:
- Тип возвращаемого значения:
- Форма:
-
см. документацию в классе Transformer.
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.TransformerEncoderLayer.html