模型训练与应用

不像Keras中已经将训练完全模块化了,PyTorch中的模型训练需要手动控制,但代码并不复杂。主要步骤如下:

  1. 划分训练循环阶段。
  2. 获取本阶段数据。
  3. 重置优化器。
  4. 使用输入计算目标值。
  5. 使用损失函数进行评估。
  6. 使用损失进行反向传播。
  7. 使用优化器更新权重。

以下给出一个示例训练代码段。

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()关闭DropoutBatch Normalization等正则化层,使模型转换为评估模式。评估模式的模型调用结果即为模型的预测结果。