【发布时间】:2019-09-28 11:16:59
【问题描述】:
总的来说,我是对象检测 API 和 TensorFlow 的新手。我遵循this 教程,最后我生成了frozen_inference_graph.pb。我想在我的手机上运行这个对象检测模型,据我了解,这需要我将其转换为 .tflite(如果这没有任何意义,请 lmk)。
当我在这里尝试使用此标准代码进行转换时:
import tensorflow as tf
graph = 'pathtomygraph'
input_arrays = ['image_tensor']
output_arrays = ['all_class_predictions_with_background']
converter = tf.lite.TFLiteConverter.from_frozen_graph(graph, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
它抛出一个错误,说:
ValueError: None 仅在第 1 维中受支持。张量 'image_tensor' 的形状无效'[None, None, None, 3]'
这是我在网上发现的一个常见错误,经过很多线程的搜索,我试图给代码额外的参数:
converter = tf.lite.TFLiteConverter.from_frozen_graph(
graph, input_arrays, output_arrays,input_shapes={"image_tensor":[1,600,600,3]})
现在看起来像这样:
import tensorflow as tf
graph = 'pathtomygraph'
input_arrays = ['image_tensor']
output_arrays = ['all_class_predictions_with_background']
converter = tf.lite.TFLiteConverter.from_frozen_graph(
graph, input_arrays, output_arrays,input_shapes={"image_tensor":[1,600,600,3]})
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
这个开始工作,但最后抛出另一个错误,说:
检查失败:array.data_type == array.final_data_type 数组 “image_tensor”的实际数据类型和最终数据类型不匹配 (data_type=uint8, final_data_type=float)。致命错误:中止
我知道我的输入张量的数据类型是 uint8,我猜这会导致不匹配。我的问题是,这是处理事情的正确方法吗? (我想在我的手机上运行我的模型)。如果是,我该如何修复错误? :/
非常感谢。
【问题讨论】:
标签: python tensorflow object-detection-api tensorflow-lite toco