Bắt đầu ngayBắt đầu miễn phí

Lớp decoder

Tương tự encoder transformer, decoder transformer cũng được xây dựng từ nhiều tầng sử dụng multi-head attention và các feed-forward sublayer. Hãy thử kết hợp các thành phần này để xây dựng lớp DecoderLayer.

Bạn có sẵn các lớp MultiHeadAttentionFeedForwardSubLayer để sử dụng, cùng với tgt_mask bạn đã tạo.

Bài tập này là một phần của khóa học

Các mô hình Transformer với PyTorch

Xem khóa học

Hướng dẫn bài tập

Hoàn thiện phương thức forward() để truyền các embedding đầu vào qua các tầng đã được định nghĩa trong phương thức __init__:

  • Thực hiện phép tính attention với tgt_mask đã cho và dùng embedding đầu vào x cho cả ma trận query, key và value.
  • Áp dụng dropout và lớp chuẩn hoá thứ nhất, norm1.
  • Truyền qua feed-forward sublayer, ff_sublayer.
  • Áp dụng dropout và lớp chuẩn hoá thứ hai, norm2.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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
Chỉnh sửa và Chạy Mã