评估模型性能

使用 PyTorch 的深度学习入门

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

训练、验证与测试

$$

  • 数据集通常分为三部分:
数据占比 作用
训练集 80-90% 调整模型参数
验证集 10-20% 调优超参数
测试集 5-10% 评估最终模型性能

$$

  • 在训练与验证中跟踪损失准确率
使用 PyTorch 的深度学习入门

计算训练损失

$$

每个 epoch:

  • 累加 dataloader 各批次的损失
  • 在 epoch 结束计算平均训练损失
training_loss = 0.0

for inputs, labels in trainloader: # 前向传播 outputs = model(inputs) # 计算损失 loss = criterion(outputs, labels)
# 反向传播 loss.backward() # 计算梯度 optimizer.step() # 更新权重 optimizer.zero_grad() # 清空梯度
# 计算并累加损失 training_loss += loss.item()
epoch_loss = training_loss / len(trainloader)
使用 PyTorch 的深度学习入门

计算验证损失

validation_loss = 0.0
model.eval() # 切换到评估模式


with torch.no_grad(): # 关闭梯度以提升效率
for inputs, labels in validationloader: # 前向传播 outputs = model(inputs) # 计算损失 loss = criterion(outputs, labels) validation_loss += loss.item() epoch_loss = validation_loss / len(validationloader) # 计算平均损失
model.train() # 切回训练模式
使用 PyTorch 的深度学习入门

过拟合

过拟合示例

使用 PyTorch 的深度学习入门

用 torchmetrics 计算准确率

import torchmetrics


# 创建准确率指标 metric = torchmetrics.Accuracy(task="multiclass", num_classes=3)
for features, labels in dataloader: outputs = model(features) # 前向传播 # 计算批次准确率(对独热标签取 argmax) metric.update(outputs, labels.argmax(dim=-1))
# 计算整轮的准确率 accuracy = metric.compute()
# 为下一轮重置指标 metric.reset()
使用 PyTorch 的深度学习入门

Passons à la pratique !

使用 PyTorch 的深度学习入门

Preparing Video For Download...