Конвертер модели TFLite не выводит uint8 - PullRequest
0 голосов
/ 01 мая 2020

Я обучил пользовательскую сеть Keras и хотел развернуть ее на MCU. Я должен квантовать его в UINT8.

model = tf.keras.models.load_model('saved_model/MaskNet_extended.h5')
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = [tf.uint8]
converter.inference_output_type = [tf.uint8]
converter.representative_dataset = rep_ds
tflite_quant_model = converter.convert()

Проблема в том, что tf_lite_quant_model по-прежнему Float32. Как это возможно?

Сеть:

model = Sequential([
    Conv2D(16, 3, padding='same', activation='relu', 
           input_shape=(IMG_SHAPE)),
    MaxPooling2D(),
    Conv2D(32, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Conv2D(64, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Flatten(),
    Dense(512, activation='relu'),
    Dense(1, activation = 'sigmoid')
])

1 Ответ

0 голосов
/ 04 мая 2020

Это известная проблема в TFLiteConverterV2, для ее решения есть обходной путь в https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/tools/optimize/python/modify_model_interface.py.

TensorFlow Lite также очень скоро выведет uint8.

...