为什么 Dequantize 节点准备失败?
Why does the Dequantize node fail to prepare?
背景
我正在尝试使用 MediaPipe 进行手部跟踪,发现这个 wrapper 对于加载 MediaPipe 的 hand_landmark.tflite
模型很有用。它在 Ubuntu 18.04 和 Tensorflow 1.14.0 上对我来说没有任何问题。
但是,当我尝试使用最近发布的更新版本 model 时,我 运行 出现以下错误:
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
模型时做错了什么?
在 TF 1.14.0 中不起作用。您至少需要 1.15.2
背景
我正在尝试使用 MediaPipe 进行手部跟踪,发现这个 wrapper 对于加载 MediaPipe 的 hand_landmark.tflite
模型很有用。它在 Ubuntu 18.04 和 Tensorflow 1.14.0 上对我来说没有任何问题。
但是,当我尝试使用最近发布的更新版本 model 时,我 运行 出现以下错误:
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
模型时做错了什么?
在 TF 1.14.0 中不起作用。您至少需要 1.15.2