从火炬7的检查站恢复CNN的训练

时间:2017-04-17 19:08:57

标签: lua neural-network conv-neural-network torch checkpoint

我正在训练CNN。我在总时期结束时实现了大约0.001 l2的损失并且保存了一个检查点。现在,当我希望恢复训练时,我加载了检查点,我开始时的错误大于0.008。

以下是我如何保存检查点:

paths.mkdir('checkpointsR3')
parametersR, gradParametersR = nil, nil -- nil them to avoid spiking memory
if epoch % 50 == 0 then
     util.save('checkpointsR3/' .. opt.name .. '_' .. (epoch+1000) .. '_net_R.t7', netR, opt.gpu)
end

以下是我加载检查点的方法:

-- load Residual Learner
assert(opt.net ~= '', 'provide a generator model')
netR = util.load(opt.net, opt.gpu)
netR:evaluate()

util是一个直接从soumith chintala's dcgan.torch使用的lua文件。

我想知道我哪里出错了,为什么l2损失高于我在那个检查站训练时的损失。我检查了我正在加载训练有素的检查点,但我仍然收到更高的错误。

1 个答案:

答案 0 :(得分:1)

知道了。 这是一个错误:

netR:evaluate()

此处的火炬文档Documentation指出,如果想要恢复培训,则应使用training()代替evaluate(),因为它会针对培训初始化BatchNormalization个图层和测试。