模型训练与应用
不像Keras中已经将训练完全模块化了,PyTorch中的模型训练需要手动控制,但代码并不复杂。主要步骤如下:
- 划分训练循环阶段。
- 获取本阶段数据。
- 重置优化器。
- 使用输入计算目标值。
- 使用损失函数进行评估。
- 使用损失进行反向传播。
- 使用优化器更新权重。
以下给出一个示例训练代码段。
optimizer = optim.SGD(net.parameters(), lr=0.01)
criterion = nn.MAELoss()
for epoch in range(2):
for data in train_loader:
inputs, labels = data
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
PyTorch中模型的使用与训练基本相似,只是需要在运行应用前使用.eval()
关闭Dropout
、Batch Normalization
等正则化层,使模型转换为评估模式。评估模式的模型调用结果即为模型的预测结果。