Ich habe Inception V3 auf einer bescheidenen Maschine mit einer einzigen GPU (GeForce GTX 980 Ti, 6GB) trainiert. Die maximale Stapelgröße scheint ungefähr 40
zu sein.
Ich habe die Standardeinstellungen für die Lernrate verwendet, die in der Datei inception_train.py
angegeben wurden: initial_learning_rate = 0.1
, num_epochs_per_decay = 30
und learning_rate_decay_factor = 0.16
. Nach ein paar Wochen Training war die beste Genauigkeit, die ich erreichen konnte, die folgende: (500K-1M Iterationen):
Ich habe versucht, gegen Ende der Trainingseinheit mit den Einstellungen herumzuspielen, konnte aber keine Verbesserung der Genauigkeit feststellen.
Ich habe eine neue Trainingssitzung von Grund auf mit num_epochs_per_decay
= 10 und learning_rate_decay_factor
= 0.001 begonnen, basierend auf einigen anderen Posts in diesem Forum, aber es ist hier im Dunkeln zu fassen.
Irgendwelche Empfehlungen zu guten Voreinstellungen für ein kleines Hardware-Setup wie meines?
TL, DR: Es gibt keine bekannte Methode, um ein Inception V3-Modell innerhalb einer akzeptablen Zeitspanne von einem bescheidenen Hardware-Setup aus neu zu trainieren. Ich würde dringend empfehlen, ein vortrainiertes Modell auf Ihre gewünschte Aufgabe zu trainieren.
Bei einem kleinen Hardware-Setup wie dem Ihren wird es schwierig sein, die maximale Leistung zu erreichen. Im Allgemeinen ist die beste Leistung für CNNs mit den größten möglichen Losgrößen. Dies bedeutet, dass bei CNN der Trainingsvorgang oft durch die maximale Stapelgröße begrenzt wird, die in den GPU-Speicher passen kann.
Das Inception V3-Modell zum Herunterladen hier wurde mit einer effektiven Stapelgröße von 1600 auf 50 GPUs trainiert - wobei jede GPU eine Stapelgröße von 32 hatte.
Angesichts Ihrer bescheidenen Hardware wäre mein erster Vorschlag, den vortrainierten Modus über den obigen Link herunterzuladen und das Modell für Ihre individuelle Aufgabe neu zu trainieren. Das würde dein Leben viel glücklicher machen.
Als Gedankenexperiment (aber kaum praktikabel) .. wenn Sie sich besonders dazu gezwungen fühlen, die Trainingsleistung des Modells vom vortrainierten Modell durch Training von Grund auf anzupassen, könnten Sie folgendes tun wahnsinnig Verfahren auf Ihrer 1 GPU. Sie könnten nämlich das folgende Verfahren ausführen:
Ich erwähne das nur, um Ihnen einen konzeptionellen Sinn dafür zu geben, was erreicht werden müsste, um genau die gleiche Leistung zu erzielen. Angesichts der von Ihnen genannten Geschwindigkeitsnummern würde dieser Vorgang Monate dauern. Kaum praktisch.
Realistischer, wenn Sie immer noch stark daran interessiert sind, von Grund auf zu trainieren und das Beste zu tun, was Sie können, hier einige allgemeine Richtlinien:
Bitte beachten Sie, dass dies allgemeine Richtlinien sind und andere sogar unterschiedliche Ratschläge geben können. Der Grund, warum wir Ihnen keine spezifischere Anleitung geben können, ist, dass CNNs dieser Größe einfach nicht von Grund auf mit einem bescheidenen Hardware-Setup trainiert werden.
Ausgezeichnete Tipps. Es gibt Vorrang für das Training mit einem ähnlichen Setup wie bei Ihnen. Schau dir das an - Ссылка Diese Leute trainierten GoogleNet, aber mit Caffe. Dennoch wäre es hilfreich, ihre Erfahrungen zu studieren.
Tags und Links computer-vision tensorflow deep-learning imagenet