Как преобразовать в tflite 8-битный (или 16-битный) квантованный из модели с входным тензором переменного размера? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь создать квантованную модель tflite из графика тензорного потока, который имеет входной тензор переменного размера. Для этого я использую tenorflow 1.14 и не могу перейти на более позднюю версию. Я видел здесь , что tf-nightly (февраль-2020) поддерживает переменные входные тензоры для tflite. К сожалению, это не вариант для меня.

Мне не нужен переменный входной тензор для моей модели tflite. Есть ли еще вариант для меня?

Я попытался просто установить тензор ввода вручную:

import tensorflow as tf

with tf.Session() as sess:
    model_cfg, model_outputs = load_model("my_model.pb", sess)
    img = sess.graph.get_tensor_by_name('image:0') # This does not work unfortunately
    img = tf.placeholder(name="image", dtype=tf.float32, shape=(1, 257, 257, 3)) # Try manually

    converter = tf.lite.TFLiteConverter.from_session(sess, [img], model_outputs)
    converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE] # 8-bit quantization
    tflite_quant_model = converter.convert()
    open("converted_model.tflite", "wb").write(tflite_quant_model)

Это дает мне квантованную модель, но я не могу ее использовать.

Я получаю сообщение об ошибке:

input->dims->size != 4 (0 != 4)Node number 0 (CONV_2D) failed to prepare

, которое, по моему мнению, связано с тем, что моя ручная вставка входного тензора не "связана" с остальной частью модели.

...