2017-04-17 4 views
1

Ich trainiere ein CNN. Gegen Ende der Epochen erreichte ich einen Verlust von 0,001 l2 und speicherte einen Kontrollpunkt. Jetzt, wenn ich das Training fortsetzen möchte, lade ich den Checkpoint und der Fehler, mit dem ich beginne, ist größer als 0,008.Fortbildung von CNN vom Kontrollpunkt in Fackel7

Hier ist, wie ich Checkpoints speichere:

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 

Hier ist, wie ich einen Kontrollpunkt bin Laden:

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

Die util ist eine lua-Datei direkt von soumith chintala's dcgan.torch verwendet.

Ich möchte wissen, wo ich falsch liege und warum der Verlust von l2 höher ist als bei der Ausbildung an diesem Kontrollpunkt. Ich überprüfte, dass ich den am besten trainierten Kontrollpunkt lade, aber immer noch einen höheren Fehler erhalte.

Antwort

1

Verstanden. Es war ein Fehler in:

netR:evaluate() 

Die Fackel Dokumentation hier, Documentation, heißt es, dass, wenn eine Ausbildung wieder aufnehmen will, sollte training() statt evaluate() verwendet werden, da es BatchNormalization Schichten unterschiedlich für Ausbildung und Prüfung initialisiert.