首页 > 代码库 > (原)torch的训练过程

(原)torch的训练过程

转载请注明出处:

http://www.cnblogs.com/darkknightzh/p/6221622.html

参考网址:

http://ju.outofmemory.cn/entry/284587

https://github.com/torch/nn/blob/master/doc/criterion.md

 

假设已经有了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行。

(原)torch的训练过程