影像分類器訓練迴圈
開始訓練影像分類器吧!你會使用先前定義的 Net,並把它訓練成能分辨 7 種雲的類型。
為了定義損失與最佳化器,你需要使用 torch.nn 與 torch.optim 中的函式,分別已匯入為 nn 與 optim。你不需要修改訓練迴圈本身:它和你之前寫的一樣,只是多了在訓練過程中列印損失的邏輯。
本練習屬於課程
Intermediate Deep Learning with PyTorch
練習說明
- 使用你的
Net類別,將num_classes設為7來建立模型,並指定給net。 - 將損失函式定義為交叉熵損失,並指定給
criterion。 - 將最佳化器定義為 Adam,傳入模型參數與學習率
0.001,並指定給optimizer。 - 以
dataloader_train的訓練images與labels進行迭代,開始訓練用的 for 迴圈。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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}")