繁体   English   中英

无法将冻结推理图转换为 .tflite

[英]Can't convert Frozen Inference Graph to .tflite

我一般是 object 检测 API 和 TensorFlow 的新手。 我按照教程进行操作,最后制作了frozen_inference_graph.pb 我想在我的手机上运行这个 object 检测 model,据我了解,这需要我将其转换为 .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 仅在第一维中受支持。 张量“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 的数据类型,这会导致不匹配,我猜。 我的问题是,这是处理事情的正确方法吗? (我想在我的手机上运行我的 model)。 如果是,我该如何修复错误? :/

非常感谢。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM