เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เลเยอร์ encoder transformer

เมื่อกำหนดคลาส FeedForwardSubLayer แล้ว ตอนนี้มีทุกส่วนที่จำเป็นสำหรับการสร้างคลาส EncoderLayer โดย encoder layer โดยทั่วไปประกอบด้วย multi-head attention mechanism และ feed-forward sublayer พร้อม layer normalization และ dropout ที่ input และ output ของ sublayer

คลาสที่กำหนดไว้แล้วพร้อมใช้งานโดยใช้ชื่อเดิม รวมถึง torch และ torch.nn ในชื่อ nn

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Transformer Models ด้วย PyTorch

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เติม method __init__ เพื่อสร้าง instance ของ MultiHeadAttention, FeedForwardSubLayer, และ layer normalization สองตัว
  • เติม method forward() โดยใส่ส่วนของ multi-head attention mechanism และ feed-forward sublayer สำหรับ attention mechanism ให้ใช้ src_mask ที่กำหนดไว้ และ input embeddings x สำหรับ matrix 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
แก้ไขและรันโค้ด