使用 PyTorch 的深度学习入门
Jasmin Ludolf
Senior Data Science Content Developer, DataCamp
$$
| 数据占比 | 作用 | |
|---|---|---|
| 训练集 | 80-90% | 调整模型参数 |
| 验证集 | 10-20% | 调优超参数 |
| 测试集 | 5-10% | 评估最终模型性能 |
$$
$$
每个 epoch:
training_loss = 0.0for 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)
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() # 切回训练模式

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 的深度学习入门