将Tensorflow模型转换为Lite版本时出现问题

时间:2019-05-15 08:15:41

标签: tensorflow tensorflow-lite

我设法创建了一个TensorFlow模型,并通过自定义操作将其另存为SavedModel .pb格式。

我的问题是我无法使用命令行实用程序或python API将其转换为精简版

我的python API是:

import tensorflow as tf 
import os
import custom_op

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

converter = tf.lite.TFLiteConverter.from_saved_model("./SavedModel")
converter.target_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,
                        tf.lite.OpsSet.SELECT_TF_OPS] 

tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

但是转换失败并出现错误:

ValueError: Provide an input shape for input array 'X'.

我认为是因为我的占位符没有形状类型。我不明白为什么普通的TensorFlow模型无法使用它。

有帮助吗?

1 个答案:

答案 0 :(得分:1)

如TensorFlow Lite的documentation中所述,您可以在tf.lite.TFLiteConverter.from_saved_model中传递不同的参数。

  

对于更复杂的SavedModels,可以传递到TFLiteConverter.from_saved_model()的可选参数是input_arrays, input_shapes, output_arrays, tag_set and signature_key。通过运行help(tf.lite.TFLiteConverter),可以获得每个参数的详细信息。

您可以按照here的说明传递此信息。您需要为输入数组“ X”提供输入形状。喜欢,

tf.lite.TFLiteConverter.from_saved_model("./Saved_model", input_shapes={("X" : [1,H,W,C])})