Из этой страницы вы получите следующую информацию:
Только целые числа Создание моделей только целых чисел - распространенный вариант использования TensorFlow Lite для микроконтроллеров и TPU Coral Edge.
Кроме того, для обеспечения совместимости с целочисленными устройствами (такими как 8-битные микроконтроллеры) и ускорителями (такими как Coral Edge TPU) вы можете принудительно применить полное целочисленное квантование для всех операций, включая ввод и вывод, выполнив следующие действия:
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_keras_model('model.h5')
converter.optimizations = [tf.lite.Optimize.DEFAULT]
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.representative_dataset = representative_dataset_gen
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.int8 # or tf.uint8
converter.inference_output_type = tf.int8 # or tf.uint8
tflite_quant_model = converter.convert()
Итак, я предполагаю, что вы хотите обеспечить совместимость только с целочисленными устройствами с указанным выше кодом.
Если вам это не нужно, и вы хотите только преобразовать свою модель, сделайте:
# WHOLE MODEL
tflite_model = tf.keras.models.load_model('model.h5')
converter = tf.lite.TFLiteConverter.from_keras_model(tflite_model)
tflite_save = converter.convert()
open("generated.tflite", "wb").write(tflite_save)
Вообще говоря, в вашем коде отсутствует 'tf' перед 'lite, поэтому в указанной c строке должно быть:
converter = tf.lite.TFLiteConverter.from_keras_model_file(saved_keras_model)
вместо:
converter = lite.TFLiteConverter.from_keras_model_file(saved_keras_model)
и вы всегда можете перейти на TF v 2.2.0, если что-то не работает.
Отметьте меня, если вам что-то понадобится