เลเยอร์ 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 embeddingsxสำหรับ 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