Caffe | solver.prototxt Werte-Einstellung-Strategie
Auf Caffe, ich bin versucht zu implementieren eine Vollständig Convolution-Netzwerk für die semantische Segmentierung. Ich Frage mich, gibt es eine bestimmte Strategie, um Ihre 'solver.prototxt'
Werte für die folgenden hyper-Parameter:
- test_iter
- test_interval
- iter_size
- max_iter
Kommt es auf die Anzahl der Bilder, die Sie in Ihrer Ausbildung gesetzt? Wenn ja, wie?
Eine weitere meta-parameter ist
weight_decay
. siehe diesen thread wie es ist.InformationsquelleAutor Abhilash Panigrahi | 2015-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um diese Werte in einer sinnvollen Art und Weise, müssen Sie ein paar bits von Informationen in Bezug auf Ihre Daten:
1. Trainings-set Größe die Gesamtzahl der Trainings-Beispiele, die Sie haben, nennen wir diese Menge
T
.2. Ausbildung batch-Größe die Anzahl von übungsbeispielen bearbeitet, die zusammen in einem einzelnen batch, dies ist in der Regel festgelegt, die von den input-Daten-Ebene in der
'train_val.prototxt'
. Zum Beispiel, in diese Datei der Zug batch-Größe auf 256 gesetzt. Wir bezeichnen diese Menge vontb
.3. Validierung set-Größe die Gesamtanzahl der Beispiele, die Sie beiseite für die Validierung Ihres Modells, lassen Sie uns bezeichnen dies durch
V
.4. Validierung batch-Größe Wert, der im
batch_size
für die TEST-phase. In dieses Beispiel es ist auf 50 festgelegt. Nennen wir diesevb
.Nun, während des Trainings, die Sie möchten, um eine un-biased Schätzung der Leistung Ihres net jeder einmal in eine Weile. Zu tun, Sie führen Ihr net auf den Validierungsdaten für
test_iter
Iterationen. Zur Abdeckung der gesamten Validierungsdaten müssen Sietest_iter = V/vb
.Wie oft möchten Sie diese Einschätzung? Es ist wirklich bis zu Ihnen. Wenn Sie ein sehr großes validation set und einem langsamen Netz, die Validierung zu oft wird das training-Prozess zu lange. Auf der anderen Seite nicht validieren, oft genug kann verhindern, dass Sie aus der Feststellung, ob und Wann Ihre Ausbildung Prozess nicht konvergieren.
test_interval
legt fest, wie oft Sie überprüfen: in der Regel für große Netze legen Sietest_interval
in der Größenordnung von 5 K, für kleinere und schnellere Netze Sie können wählen Sie niedrigere Werte. Wieder, alle bis auf Sie.Zur Deckung der gesamten Ausbildung (Abschluss einer "Epoche"), die Sie benötigen, um ausführen
T/tb
Iterationen. In der Regel trainiert man für die verschiedenen Epochen, somax_iter=#epochs*T/tb
.Bezüglich
iter_size
: dies ermöglicht das Durchschnittliche Gefälle über mehrere Trainings-mini-batches finden Sie unter dieser thread her mehr Informationen.Danke für das ausführliche Beispiel. Ich bin immer noch verwirrt wegen meinen Gebrauch Fall der
Caffe
mitAlexNet
. Ich habe system mit115GB
Speicher und mittrain
undval
Daten in LMDB ausImageNet ILSVRC 2012
. Ich bin mit den solver-Datei mit allen Parametern, wie es ist, außermax_iteration=100
. Ich verstehe nicht, warum der Speicherverbrauch ist ungefähr10GB
? Es sollte sein viel kleiner alsCaffe
arbeitet auf Stapel von Bildern statt, die vollständigen Daten . Keine Ahnung, wie diese Berechnung erfolgt ist?es scheint, dass Sie sind verwirrend storage-Anforderungen für die Modell - Parameter und RAM-Auslastung für Zug/val-Berechnung. Caffe speichert im Speicher alle Parameter +deren Derivate, zusätzlich speichert Sie die Daten (Zug/val Chargen) und Derivate (backprop). Einige Löser jemals benötigt zusätzlichen Speicher für die pro-parameter einstellbar learning rate (z.B.
"Adam"
). All dies kann sicherlich benötigen viel RAM. Siehe z.B. diesen threadInformationsquelleAutor Shai