การสร้าง Input Embeddings
ถึงเวลาเริ่มสร้างโมเดล transformer ของคุณเองแล้ว! ขั้นตอนแรกคือการแปลง token ID ของ input ให้เป็น embedding
ให้กำหนดคลาส InputEmbeddings ที่มีพารามิเตอร์ดังนี้:
vocab_size: ขนาด vocabulary ของโมเดลd_model: จำนวนมิติของ input embedding
ไลบรารี torch และ math รวมถึง torch.nn ในชื่อ nn ได้ถูก import ไว้ให้แล้ว และจะใช้ตลอดแบบฝึกหัดในคอร์สนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transformer Models ด้วย PyTorch
คำแนะนำการฝึกหัด
- กำหนดจำนวนมิติของโมเดลและขนาด vocabulary ให้กับอาร์กิวเมนต์
d_modelและvocab_sizeตามลำดับ - สร้าง instance ของ embedding layer
- คืนค่า embedding ที่คูณด้วยรากที่สองของ
self.d_model - สร้าง instance ของ
InputEmbeddingsโดยกำหนดvocab_sizeเป็น 10,000 และd_modelเป็น 512 แล้วนำไปใช้กับtoken_ids
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
class InputEmbeddings(nn.Module):
def __init__(self, vocab_size: int, d_model: int) -> None:
super().__init__()
# Set the model dimensionality and vocabulary size
self.d_model = ____
self.vocab_size = ____
# Instantiate the embedding layer
self.embedding = ____
def forward(self, x):
# Return the embeddings multiplied by the square root of d_model
return ____
# Instantiate InputEmbeddings and apply it to token_ids
embedding_layer = ____
output = ____
print(output.shape)