3

Ich war die Überprüfung der Caffe Lenet Tutorial here und eine Frage in den Sinn kam:Caffe Lenet: Unterschied zwischen `solver.step (1)` und `solver.net.forward()`

Was ist der Unterschied zwischen diesen ist 2-Codes:

self.solver.step(1) 

und

self.solver.net.forward() # train net 

beide scheinen das Netzwerk zumindest nach dem Kommentar zu trainieren.

Persönlich denke ich, der erste trainiert das Netzwerk auf den Trainingsdaten und aktualisiert die Gewichte von net und test_net, aber die zweite scheint nur eine Charge von Daten weiterzuleiten und die gelernten Gewichte aus dem vorherigen Schritt anzuwenden.

Wenn was ich denke, ist richtig, was ist der Zweck des zweiten Codes in der Anleitung? Warum hat der Code eine net.forward? kann nicht solver.step(1) dies selbst tun?

Vielen Dank für Ihre Zeit

Antwort

6

Schritt tut eine volle Iteration, die alle drei Phasen: vorwärts Bewertung, rückwärts Ausbreitung und Update. Der Anruf an weiterleiten macht nur die erste von diesen. Es gibt auch Unterschiede in der Signatur (Parameterliste).

+0

Danke ... wenn charge_size 100 (von 2000 Bildern) ist, dann macht step() die 3 Phasen auf 100 Chargen oder 2000 Chargen? – Cypher

+2

Schritt macht nur eine Iteration: eine einzelne Charge von 100 Bildern. Das Ausführen eines vollständigen Satzes von 20 Stapeln (alle 2000 Eingaben) wird als * Epoche * bezeichnet. – Prune

+0

Ich bin froh, Ihnen helfen zu können. Danke für die Abstimmung und den grünen Check. – Prune

Verwandte Themen