2017-04-17 88 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()