Я работал над проблемой, когда я обучал модель с помощью API обнаружения объектов Tensorflow с использованием настраиваемого набора данных. Я использую tf версии 2.2.0
output_directory = 'inference_graph'
!python /content/models/research/object_detection/exporter_main_v2.py \
--trained_checkpoint_dir {model_dir} \
--output_directory {output_directory} \
--pipeline_config_path {pipeline_config_path}
Мне удалось успешно получить файл .pb вместе с файлом .ckpt. Но теперь мне нужно преобразовать его в .tflite. Я не могу этого сделать, произошла какая-то ошибка.
Я попробовал основной способ, который был написан в документации TensorFlow, но это тоже не сработало. Другой код, который я пробовал, приведен ниже:
import tensorflow as tf
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dense, Input, Reshape, Concatenate, GlobalAveragePooling2D, BatchNormalization, Dropout, Activation, GlobalMaxPooling2D
from tensorflow.keras.utils import Sequence
model = tf.saved_model.load(f'/content/drive/MyDrive/FINAL DNET MODEL/inference_graph/saved_model/')
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.post_training_quantize=True
converter.inference_type=tf.uint8
tflite_model = converter.convert()
open("val_converted_model_int8.tflite", "wb").write(tflite_model)
Я получаю следующую ошибку:
AttributeError Traceback (последний вызов последним) в () 8 converter.post_training_quantize = True 9 converter.inference_type = tf.uint8 --- ›10 tflite_model = converter.convert () 11 открыть (val_converted_model_int8.tflite, wb) .write (tflite_model )
/usr/local/lib/python3.6/dist-packages/tensorflow/lite/python/lite.py в convert (self) 837 # to None. 838 # Когда у нас будет лучшая поддержка динамических фигур, мы сможем это удалить. - ›839 if not isinstance (self._keras_model.call, _def_function.Function): 840 # Pass
keep_original_batch_size=True
гарантирует, что мы получим входную подпись 841 #, включая размер пакета, указанный пользователем.AttributeError: объект '_UserObject' не имеет атрибута 'call'
Может ли кто-нибудь помочь мне с этим?