Spec-Zone.ru › PyTorch 1

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]

Пропускает вход через блок кодировщика.

Параметры:
  • src (Tensor) – последовательность для блока кодировщика (необходимо).
  • src_mask (Optional[Tensor]) – маска для последовательности src (необязательно).
  • src_key_padding_mask (Optional[Tensor]) – маска для ключей src по батчам (необязательно).
Тип возвращаемого значения:

Tensor

Форма:

см. документацию в классе 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

Spec-Zone.ru

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