2017-04-17 87 views
1

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

这里是我现在的储蓄关卡:

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

明白了。 这是一个故障:

netR:evaluate() 

火炬文档这里,Documentation,指出,如果一个人想恢复训练,training()应该是因为它用于训练和测试不同的初始化BatchNormalization层用来代替evaluate()