Ich untersuche gerade die optimale Präzision für das Training eines DNN. Ich habe gelernt, dass zum Schluss sogar eine komprimierte 8-Bit-Genauigkeit funktionieren sollte; Für das Training würden wir eine höhere Präzision benötigen. Was wäre die optimale Präzision für Deep Learning (fp16, fp32 oder fp64)? Ich kann Tensorflow-GPU für diesen Zweck verwenden.Was ist die optimale Präzision für das Training eines typischen tiefen neuralen Netzwerks?
Antwort
Dies hängt von der Bewertungsfunktion ab, die Sie für "optimal" haben: ist Ihre Fokustrainingszeit (weniger Präzision ist schneller), Genauigkeit (weniger Präzision ist oft weniger genau) oder eine andere Ressource? Dies hängt auch etwas von der Modellkomplexität und Topologie ab.
ConvNet (MNIST) wird gut auf 8-Bit-Floats; Das Training ist schneller und der Genauigkeitsunterschied (falls vorhanden) wird unbedeutend sein. Wenn Sie sich in etwas interdependenteres und fragileres (vielleicht ein Kernel-hungerved GNN) bewegen, dann werden Sie einen Genauigkeitsverlust beim Fallenlassen auf 8-Bit bemerken.
Je nach Ihren Anforderungen können Sie manchmal Trainingszeit einsparen, indem Sie auf 8-Bit-Gleitkommazahlen setzen, aber etwas verlorene Genauigkeit wiederherstellen, indem Sie Ihr Modell (mehr Kerne in Faltungsschichten) um einen kleinen Betrag erweitern.
Using 8 oder 16 Bit Floats machen das Training mit fast allen GPUs nicht schneller. Den GPUs fehlen die Verarbeitungseinheiten für die niedrigere Genauigkeit und stattdessen werden die gleichen 32-Bit-Verarbeitungseinheiten verwendet. – BlueSun
@BlueSun: Richtig - ich habe diesen letzten Satz verpasst. Ich arbeite hauptsächlich an CPUs. – Prune
Die optimale Genauigkeit ist in den meisten Fällen float32. float64 wird die Ausführung auf der GPU deutlich verlangsamen. Auf der anderen Seite, wenn Sie eine Tesla p100 GPU haben, macht die Verwendung von float16 die Ausführung nicht schneller.
- 1. Wie man die Softmax Aktivierungsfunktion innerhalb eines neuralen Netzwerks verwendet
- 2. Feinabstimmung eines tiefen neuronalen Netzwerks in Tensorflow
- 3. Nan Verlust beim Training eines tiefen neuronalen Netzwerks in Tensorflow Tutorial
- 4. neuralen Netzwerk in MATLAB schlägt im Training
- 5. Vorhersage nach dem Training eines neuralen Netzwerkes Matlab
- 6. Was ist die optimale Zellengröße für UITableViews?
- 7. Was sind die typischen Anwendungsfälle für vi?
- 8. Plötzlicher Abfall der Genauigkeit beim Training eines tiefen neuronalen Netzes
- 9. Implementieren eines neuronalen Netzwerks in Java: Training und Backpropagation Probleme
- 10. Zero Accuracy Training eines neuronalen Netzwerks in Keras
- 11. Welche Schichten sollten beim Training eines Neuronalen Netzwerks "Dropout" erfahren?
- 12. Was ist der optimale Blind-Algorithmus für das Spiel, 2048?
- 13. Wie spezifiziert man die Architektur eines tiefen neuronalen Netzwerks in Tensorflow?
- 14. Was ist der Algorithmus zum Testen eines benutzerdefinierten neuronalen Netzwerks?
- 15. Was ist die optimale Auflösung für eine Silverlight-Anwendung?
- 16. Was ist das Simulator-Tool für den Aufbau eines Netzwerks und Router laufen lassen SNMP
- 17. Was ist die optimale Lösung für den Tag/Keyword-Abgleich?
- 18. Was ist die optimale Größe für eine Klassendatei?
- 19. Kartographie eines Netzwerks
- 20. Nans wird nach dem Training eines neuronalen Netzwerks für einige Zeit mit Tensorflow generiert
- 21. Was ist eine optimale Datenstruktur für einen Baum von Karten?
- 22. Was ist die optimale Bedingung für das Zählen von Zeilen in der Textdatei?
- 23. Was ist das optimale String-Format für die Konvertierung in ein Array?
- 24. Erkennen eines verbundenen Netzwerks
- 25. Was ist die optimale Information, die jeder Knoten enthalten sollte?
- 26. Interpretieren Trainings Trace eines tiefen neuronalen Netzwerks: sehr geringer Trainingsverlust und noch niedrigerer Validierungsverlust
- 27. Erstellen eines hierarchischen Netzwerks
- 28. Was ist der optimale "allgemeinste Unifier" -Algorithmus?
- 29. Was ist die optimale Größe von elasticserach Objekt
- 30. Tensorflow - Erstellen eines neuronalen Netzwerks für die einfache Array-/Listeneingabe
Was ich die meiste Zeit gesehen habe, ist float32, nicht sicher, ob alle Operationen mit Float64 noch implementiert werden –
Dieses Problem für Beispiel https://github.com/tensorflow/tensorflow/issues/13097 –