图像分类器训练循环
现在开始训练图像分类器!您将使用之前定义的 Net,并训练它区分 7 种云的类型。
要定义损失函数和优化器,您需要使用 torch.nn 和 torch.optim 中的函数,分别已以 nn 和 optim 导入。训练循环本身无需修改:它与您之前写的一样,只是增加了在训练过程中打印损失的逻辑。
本练习是课程的一部分
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}")