Eine Frage haben? Verbinden Sie sich mit der Community im TensorFlow Forum Visit Forum

Quantisierung nach dem Training

Die Quantisierung nach dem Training umfasst allgemeine Techniken zur Reduzierung der Latenz, Verarbeitung, Leistung und Modellgröße von CPU- und Hardwarebeschleunigern bei geringer Verschlechterung der Modellgenauigkeit. Diese Techniken können an einem bereits trainierten Float-TensorFlow-Modell durchgeführt und während der TensorFlow Lite-Konvertierung angewendet werden. Diese Techniken sind im TensorFlow Lite-Konverter als Optionen aktiviert.

In den folgenden Tutorials finden Sie Informationen zu End-to-End-Beispielen:

Gewichte quantisieren

Gewichte können mit reduzierter Genauigkeit in Typen konvertiert werden, z. B. 16-Bit-Gleitkommazahlen oder 8-Bit-Ganzzahlen. Wir empfehlen im Allgemeinen 16-Bit-Floats für die GPU-Beschleunigung und 8-Bit-Ganzzahlen für die CPU-Ausführung.

Hier erfahren Sie beispielsweise, wie Sie eine 8-Bit-Quantisierung der Ganzzahlgewichtung angeben:

import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()

In der Schlussfolgerung werden die kritischsten Teile mit 8 Bit anstelle von Gleitkomma berechnet. In Bezug auf die Quantifizierung der Gewichte und Aktivierungen unten gibt es einen gewissen Aufwand für die Inferenzzeitleistung.

Weitere Informationen finden Sie im TensorFlow Lite -Quantisierungshandbuch nach dem Training .

Vollständige ganzzahlige Quantisierung von Gewichten und Aktivierungen

Verbessern Sie die Latenz, die Verarbeitung und den Stromverbrauch und erhalten Sie Zugriff auf Hardwarebeschleuniger nur für Ganzzahlen, indem Sie sicherstellen, dass sowohl Gewichte als auch Aktivierungen quantisiert werden. Dies erfordert einen kleinen repräsentativen Datensatz.

import tensorflow as tf

def representative_dataset_gen():
  for _ in range(num_calibration_steps):
    # Get sample input data as a numpy array in a method of your choosing.
    yield [input]

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()

Das resultierende Modell übernimmt zur Vereinfachung weiterhin die Eingabe und Ausgabe von Floats.

Weitere Informationen finden Sie im TensorFlow Lite -Quantisierungshandbuch nach dem Training .