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

Lớp encoder transformer

Với lớp FeedForwardSubLayer đã được định nghĩa, bạn đã có đủ các thành phần để xây dựng lớp EncoderLayer. Nhắc lại: một encoder layer thường gồm có cơ chế multi-head attention và một feed-forward sublayer, với layer normalization và dropout áp dụng cho đầu vào và đầu ra của mỗi sublayer.

Các lớp bạn đã định nghĩa sẵn đều có sẵn với đúng tên đó, cùng với torchtorch.nnnn.

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 __init__ để khởi tạo MultiHeadAttention, FeedForwardSubLayer, và hai layer normalization.
  • Hoàn thiện phương thức forward() bằng cách bổ sung cơ chế multi-head attention và feed-forward sublayer; với cơ chế attention, hãy dùng src_mark được cung cấp và embedding đầu vào x cho các ma trận query, key, value.

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