ลูปการฝึก Image Classifier
ถึงเวลาฝึก image classifier แล้ว! จะใช้ Net ที่กำหนดไว้ก่อนหน้านี้เพื่อฝึกให้โมเดลแยกแยะระหว่างประเภทเมฆ 7 ประเภท
ในการกำหนด loss และ optimizer ให้ใช้ฟังก์ชันจาก torch.nn และ torch.optim ซึ่ง import ให้แล้วในชื่อ nn และ optim ตามลำดับ ไม่จำเป็นต้องแก้ไขส่วนใดใน training loop เลย เพราะมีโครงสร้างเหมือนกับที่เขียนไว้ก่อนหน้า โดยเพิ่มโค้ดสำหรับแสดงค่า loss ระหว่างการฝึกเข้ามาด้วย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Deep Learning ระดับกลางด้วย PyTorch
คำแนะนำการฝึกหัด
- กำหนดโมเดลโดยใช้คลาส
Netโดยตั้งค่าnum_classesเป็น7แล้วกำหนดให้กับตัวแปรnet - กำหนด loss function เป็น cross-entropy loss แล้วกำหนดให้กับตัวแปร
criterion - กำหนด optimizer เป็น Adam โดยส่งพารามิเตอร์ของโมเดลและ learning rate เป็น
0.001แล้วกำหนดให้กับตัวแปรoptimizer - เริ่ม for-loop การฝึกโดย iterate ผ่าน
imagesและlabelsของdataloader_train
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define the model
____ = ____
# Define the loss function
____ = ____
# Define the optimizer
____ = ____
for epoch in range(3):
running_loss = 0.0
# Iterate over training batches
____
optimizer.zero_grad()
outputs = net(images)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
epoch_loss = running_loss / len(dataloader_train)
print(f"Epoch {epoch+1}, Loss: {epoch_loss:.4f}")