การสร้างข้อความด้วย RNN - การเทรนและการสร้างข้อความ
ทีม PyBooks ต้องการให้เทรนและทดสอบโมเดล RNN ซึ่งออกแบบมาเพื่อทำนายอักขระถัดไปในลำดับจากข้อมูลที่รับเข้ามา สำหรับใช้ในการเติมชื่อหนังสือโดยอัตโนมัติ โปรเจกต์นี้จะช่วยให้ทีมพัฒนาโมเดลสำหรับการเติมข้อความต่อไปได้
instance model ของคลาส RNNmodel ถูกโหลดไว้ให้แล้ว ตัวแปร data ผ่านการประมวลผลและเข้ารหัสเป็นลำดับข้อมูลแล้ว
ตัวแปร inputs และ targets ถูกโหลดไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Deep Learning สำหรับข้อความด้วย PyTorch
คำแนะนำการฝึกหัด
- สร้าง loss function สำหรับคำนวณความผิดพลาดของโมเดล
- สร้าง optimizer จากโมดูล optimization ของ PyTorch
- รันกระบวนการเทรนโมเดลโดยตั้งค่าโมเดลเป็นโหมด train และรีเซ็ต gradient ก่อนดำเนินการ optimization step
- หลังจากเทรนเสร็จแล้ว สลับโมเดลไปยังโหมดประเมินผลเพื่อทดสอบกับข้อมูลตัวอย่าง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Instantiate the loss function
criterion = nn.____()
# Instantiate the optimizer
optimizer = torch.optim.____(model.parameters(), lr=0.01)
# Train the model
for epoch in range(100):
model.____()
outputs = model(inputs)
loss = criterion(outputs, targets)
optimizer.____()
loss.backward()
optimizer.step()
if (epoch+1) % 10 == 0:
print(f'Epoch {epoch+1}/100, Loss: {loss.item()}')
# Test the model
model.____()
test_input = char_to_ix['r']
test_input = nn.functional.one_hot(torch.tensor(test_input).view(-1, 1), num_classes=len(chars)).float()
predicted_output = model(test_input)
predicted_char_ix = torch.argmax(predicted_output, 1).item()
print(f"Test Input: 'r', Predicted Output: '{ix_to_char[predicted_char_ix]}'")