【问题标题】:Can't convert Frozen Inference Graph to .tflite无法将冻结推理图转换为 .tflite
【发布时间】: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


    【解决方案1】:

    将您的模型输入(image_tensor 占位符)更改为数据类型为 tf.float32

    【讨论】:

      猜你喜欢
      • 2021-03-23
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多