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

Шар декодера

Як і трансформери-енкодери, трансформери-декодери також складаються з кількох шарів, що використовують багатоголову увагу та feed-forward підшари. Спробуйте поєднати ці компоненти, щоб побудувати клас DecoderLayer.

Класи MultiHeadAttention і FeedForwardSubLayer доступні для використання, так само як і tgt_mask, яку ви створили.

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

Моделі Transformer з PyTorch

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

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

Завершіть метод forward(), щоб пропустити вхідні вкладення (embeddings) через шари, визначені в __init__:

  • Виконайте обчислення уваги, використовуючи надану tgt_mask і вхідні вкладення x як матриці запитів, ключів і значень.
  • Застосуйте dropout і першу нормалізацію шару, norm1.
  • Виконайте проходження через feed-forward підшар, ff_sublayer.
  • Застосуйте dropout і другу нормалізацію шару, norm2.

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

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

class DecoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        self.self_attn = MultiHeadAttention(d_model, num_heads)
        self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, tgt_mask):
        # Perform the attention calculation
        attn_output = self.____
        # Apply dropout and the first layer normalization
        x = self.____(x + self.____(attn_output))
        # Pass through the feed-forward sublayer
        ff_output = self.____(x)
        # Apply dropout and the second layer normalization
        x = self.____(x + self.____(ff_output))
        return x
Редагувати та запускати код