PyTorch 训练机器学习模型的一般流程
数据准备
收集并处理训练数据集和验证/测试数据集
使用 PyTorch 的数据加载器 DataLoader 将数据集转换为可用于训练的格式
模型定义
使用 PyTorch 的 nn.Module 定义模型的结构
例如,对于一个简单的全连接神经网络:
import torch.nn as nnclass MyModel(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(MyModel, self).__init__()self.fc1 = nn.Linear(input_size, hidden_size)self.relu = nn.ReLU()self.fc2 = nn.Linear(hidden_size, output_size)def forward(self, x):out = self.fc1(x)out = self.relu(out)out = self.fc2(out)return out
损失函数和优化器
选择合适的损失函数,如 nn.MSELoss() 或 nn.CrossEntropyLoss()
选择合适的优化算法,如 torch.optim.Adam() 或 torch.optim.SGD()
训练循环
编写训练循环,在每个 epoch 中:
将数据输入模型并计算损失
反向传播计算梯度
利用优化器更新模型参数
# 训练循环
num_epochs = 100
for epoch in range(num_epochs):# 前向传播outputs = model(inputs)loss = criterion(outputs, labels)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()if (epoch+1) % 10 == 0:print (f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')
模型评估
使用验证/测试数据集评估模型性能
计算相关的性能指标,如准确率、F1 分数等
模型保存和部署
保存训练好的模型参数,以备未来使用
部署模型到生产环境,供实际应用使用