我设法创建了一个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模型无法使用它。
有帮助吗?
答案 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])})