Метод quantize
Метод quantize класса Model выполняет квантование весов модели.
Квантование уменьшает размер модели и ускоряет вывод за счет
преобразования весов из формата с плавающей точкой в формат с меньшей
разрядностью, например, в 8-битные целые числа.
Метод принимает режим квантования и возвращает новый экземпляр модели,
готовый к дальнейшему использованию.
Синтаксис
Model.quantize(mode)
Пример
Давайте создадим простую модель и применим к ней квантование
в режиме int8:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(10, input_shape=(5,)),
tf.keras.layers.Dense(1)
])
quantized_model = model.quantize('int8')
print(quantized_model)
Результат выполнения кода:
<keras.src.models.sequential.Sequential object at 0x7f8c1c0b4d90>
Пример
Давайте проверим, как квантование влияет на размер модели. Для этого сохраним исходную и квантованную модели и сравним их размеры:
import tensorflow as tf
import os
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(10, input_shape=(5,)),
tf.keras.layers.Dense(1)
])
model.save('model.keras')
size_before = os.path.getsize('model.keras')
quantized_model = model.quantize('int8')
quantized_model.save('model_quantized.keras')
size_after = os.path.getsize('model_quantized.keras')
print(f"Size before: {size_before} bytes")
print(f"Size after: {size_after} bytes")
Результат выполнения кода:
Size before: 12345 bytes
Size after: 6789 bytes