Почему узел деквантования не готовится?
Задний план
Я играю с MediaPipe для отслеживания рук и нашел эту полезную оболочку для загрузки MediaPipehand_landmark.tflite
модель. У меня он без проблем работает на Ubuntu 18.04 с Tensorflow 1.14.0.
Однако, когда я пытаюсь использовать более новую, недавно выпущенную модель, я сталкиваюсь со следующей ошибкой:
INFO: Initialized TensorFlow Lite runtime.
Traceback (most recent call last):
File "/home/user/code/.../repo/models/test_model.py", line 12, in <module>
use_mediapipe_model()
File "/home/user/code/.../repo/models/test_model.py", line 8, in use_mediapipe_model
interp_joint.allocate_tensors()
File "/home/user/code/env/lib/python3.6/site-packages/tensorflow/lite/python/interpreter.py", line 95, in allocate_tensors
return self._interpreter.AllocateTensors()
File "/home/user/code/env/lib/python3.6/site-packages/tensorflow/lite/python/interpreter_wrapper/tensorflow_wrap_interpreter_wrapper.py", line 106, in AllocateTensors
return _tensorflow_wrap_interpreter_wrapper.InterpreterWrapper_AllocateTensors(self)
RuntimeError: tensorflow/lite/kernels/dequantize.cc:62 op_context.input->type == kTfLiteUInt8 || op_context.input->type == kTfLiteInt8 was not true.Node number 0 (DEQUANTIZE) failed to prepare.
Глядя на две модели в Netron, я вижу, что в новой модели используются узлы типа Dequantize
которые, кажется, вызывают проблему. Поскольку я новичок, когда дело касается Tensorflow, я действительно не знаю, что делать дальше.
Код для воспроизведения ошибки
from pathlib import Path
import tensorflow as tf
def use_mediapipe_model():
interp_joint = tf.lite.Interpreter(
f"{Path(__file__).parent}/hand_landmark.tflite") # path to model
interp_joint.allocate_tensors()
if __name__ == "__main__":
use_mediapipe_model()
Вопрос
Связана ли проблема с версией Tensorflow, которую я использую, или я что-то делаю не так, когда дело доходит до загрузки .tflite
модели?
1 ответ
Решение