Функция torch.nn.TransformerEncoderLayer в PyTorch

PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn


nn.TransformerEncoderLayerЭто однослойная структура энкодера Transformer.

Он содержит механизм самовнимания и сети прямого распространения и является базовой единицей полного энкодера.

Определение функции

torch.nn.TransformerEncoderLayer(d_model, nhead, dim_feedforward=2048, dropout=0.1, activation='gelu', batch_first=True)

Parameters

  • d_model: Размерность модели
  • nhead: Количество голов внимания
  • dim_feedforward: Размерность скрытого слоя FFN

Примеры использования

Пример 1: Базовое использование

Пример

import torch
import torch.nn as nn

# Слой энкодера
layer = nn.TransformerEncoderLayer(d_model=512, nhead=8, batch_first=True)

# Ввод
x = torch.randn(32, 100, 512)
output = layer(x)

print("Вход:", x.shape, "-> Выход:", output.shape)

Пример 2: Пользовательская функция активации

Пример

import torch
import torch.nn as nn

# Использовать активацию ReLU
layer_relu = nn.TransformerEncoderLayer(d_model=256, nhead=4, activation='relu', batch_first=True)

x = torch.randn(8, 50, 256)
out = layer_relu(x)

print("Вывод активации ReLU:", out.shape)

Пример 3: Многослойное стекирование

Пример

import torch
import torch.nn as nn

# Стекировать несколько слоёв
layer = nn.TransformerEncoderLayer(256, 4, batch_first=True)
encoder = nn.Sequential(
    слой,
    nn.TransformerEncoderLayer(256, 4, batch_first=True),
    nn.TransformerEncoderLayer(256, 4, batch_first=True)
)

x = torch.randn(4, 30, 256)
out = encoder(x)

print("вывод 3-слойного энкодера:", out.shape)

Сценарии использования

  • Построение энкодера
  • Модели, такие как BERT
  • Понимание текста

PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn

Другие расширения