Сохраните дату! Google I / O возвращается 18-20 мая Зарегистрируйтесь сейчас
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Квантование после обучения

Квантование после обучения включает в себя общие методы для уменьшения задержки процессора и аппаратного ускорителя, обработки, мощности и размера модели с небольшим ухудшением точности модели. Эти методы могут выполняться на уже обученной модели TensorFlow с плавающей запятой и применяться во время преобразования TensorFlow Lite. Эти методы включены как опции в конвертере TensorFlow Lite .

Чтобы сразу перейти к сквозным примерам, см. Следующие руководства:

Квантование весов

Веса можно преобразовать в типы с пониженной точностью, такие как 16-битные числа с плавающей запятой или 8-битные целые числа. Обычно мы рекомендуем 16-битные числа с плавающей запятой для ускорения графического процессора и 8-битные целые числа для выполнения CPU.

Например, вот как указать 8-битное целочисленное квантование веса:

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()

При выводе наиболее критически важные части вычисляются с использованием 8 бит вместо числа с плавающей запятой. Имеются некоторые накладные расходы на время вывода, связанные с квантованием как весов, так и активаций ниже.

Дополнительные сведения см. В руководстве по посттренировочному квантованию TensorFlow Lite.

Полное целочисленное квантование весов и активаций

Увеличьте задержку, обработку и потребление энергии и получите доступ к аппаратным ускорителям только для целых чисел, убедившись, что и веса, и активации квантованы. Для этого требуется небольшой репрезентативный набор данных.

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()

Результирующая модель по-прежнему будет принимать ввод и вывод с плавающей запятой для удобства.

Для получения дополнительной информации см. Руководство по посттренировочному квантованию TensorFlow Lite.