ПочатиПочніть безкоштовно

Шар encoder-трансформера

Маючи визначений клас FeedForwardSubLayer, ви маєте всі складники, щоб оголосити клас EncoderLayer. Нагадаємо, що шар encoder зазвичай складається з механізму багатоголової уваги та підшару прямого поширення з нормалізацією шару і dropоut на входах і виходах підшару.

Класи, які ви вже оголосили, доступні з тими самими назвами, а також доступні torch і torch.nn як nn.

Ця вправа є частиною курсу

Моделі Transformer з PyTorch

Переглянути курс

Інструкції до вправи

  • Доповніть метод __init__, створивши екземпляри MultiHeadAttention, FeedForwardSubLayer і двох нормалізацій шару.
  • Завершіть метод forward(), заповнивши виклики механізму багатоголової уваги та підшару прямого поширення; для механізму уваги використайте наданий src_mark і вхідні вкладення x як матриці query, key і value.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

class EncoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        # Instantiate the layers
        self.self_attn = ____(d_model, num_heads)
        self.ff_sublayer = ____(d_model, d_ff)
        self.norm1 = ____
        self.norm2 = ____
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, src_mask):
        # Complete the forward method
        attn_output = self.____
        x = self.norm1(x + self.dropout(attn_output))
        ff_output = self.____
        x = self.norm2(x + self.dropout(ff_output))
        return x
Редагувати та запускати код