2016-07-21 12 views
0

Ich versuche, den Testverlust in meiner eigenen Trainingsschleife in Python zu berechnen. Aufruf solver.test_nets[0].forward() scheint den score Blob zu aktualisieren, aber nicht den loss einen. Irgendeine Idee, wie man es aktualisiert bekommt?Wie berechnet man Test/Validierungsverlust in Pycaffe?

ich folgende Solver Config bin mit:

net: "/tmp/tmp8ikb9sg2/train.prototxt" 
test_net: "/tmp/tmp8ikb9sg2/test.prototxt" 
test_iter: 1 
test_interval: 2147483647 
base_lr: 0.1 
lr_policy: "fixed" 
test_initialization: false 

und Zug und test.prototxt sind genau die gleichen mit Ausnahme der Phase Definition am Anfang der Datei:

name: "pycaffenet" 
state { 
    phase: TRAIN # set TEST in test.prototxt 
} 
... 
layer { 
    name: "loss" 
    type: "SoftmaxWithLoss" 
    bottom: "score" 
    bottom: "output" 
    top: "loss" 
} 
+0

Wie sieht der Prototxt aus? Gibt es einen 'include'-Parameter, der die Verlustschicht auf die Train-Phase beschränkt? – Prophecies

+0

@Prophecies Ich beschränke die Verlustschicht nicht. Ich habe Teile der Prototxt-Dateien in der Beschreibung^hinzugefügt. –

Antwort

1

Es war eigentlich ein anderes Thema, was ich dachte. Der Blob loss wurde aktualisiert, aber er blieb derselbe, weil sich die Gewichte von solver.test_nets[0] nicht änderten. Es sieht so aus, als ob sie nicht automatisch mit solver.net geteilt werden. Dies kann durch einfachen Aufruf erfolgen:

solver.test_nets[0].share_with(solver.net)