参考网址:
假设已经有了 model=setupmodel(自己建立的模型),同时也有自己的训练数据 input,实际输出 outReal,以及损失函数 criterion(参见第二个网址),则使用 torch 训练过程如下:
- 1 -- given model, criterion, input, outReal
- 2 model:training()
- 3 model:zeroGradParameters()
- 4 outPredict = model:forward(input)
- 5 err= criterion:forward(outPredict, outReal)
- 6 grad_criterion = criterion:backward(outPredict, outReal)
- 7 model:backward(input, grad_criterion)
- 8 model:updateParameters(learningRate)
上面第 1 行假定已知的参数
第 2 行设置为训练模式
第 3 行将 model 中每个模块保存的梯度清零(防止之前的干扰此次迭代)
第 4 行将输入 input 通过 model,得到预测的输出 outPredict
第 5 行通过损失函数计算在当前参数下模型的预测输出 outPredict 和实际输出 outReal 的误差 err
第 6 行通过预测输出 outPredict 和实际输出 outReal 计算损失函数的梯度 grad_criterion
第 7 行反向计算 model 中每个模块的梯度
第 8 行更新 model 每个模块的参数
每次迭代时,均需要执行第 3 行至第 8 行。
来源: