【发布时间】:2018-01-31 07:10:18
【问题描述】:
这是一个玩具模型。我在调用backward 之前打印了模型参数一次,然后再次打印模型参数。参数不变。如果我在调用backward 之后添加行model:updateParameters(<learning_rate>),我会看到参数更新。
但是在我看到的示例代码中,例如https://github.com/torch/demos/blob/master/train-a-digit-classifier/train-on-mnist.lua,实际上没有人调用updateParameters。此外,它看起来也不像 optim.sgd、optim.adam 或 nn.StochasticGradient 也不会调用 updateParameters。我在这里想念什么?参数如何自动更新?如果我必须调用updateParameters,为什么没有示例这样做?
require 'nn'
require 'optim'
local model = nn.Sequential()
model:add(nn.Linear(4, 1, false))
local params, grads = model:getParameters()
local criterion = nn.MSECriterion()
local inputs = torch.randn(1, 4)
local labels = torch.Tensor{1}
print(params)
model:zeroGradParameters()
local output = model:forward(inputs)
local loss = criterion:forward(output, labels)
local dfdw = criterion:backward(output, labels)
model:backward(inputs, dfdw)
-- With the line below uncommented, the parameters are updated:
-- model:updateParameters(1000)
print(params)
【问题讨论】:
标签: machine-learning lua torch