使用tflite_convert量化SavedModel遇SignatureDefs错误求助
解决TensorFlow SavedModel转TFLite时的SignatureDef错误
你遇到的这个问题核心很明确:tflite_convert 工具默认会寻找名为 serving_default 的SignatureDef,但你的SavedModel里只定义了自定义的 name_of_my_model 签名,所以才会抛出找不到默认签名的错误。
直接解决方法:显式指定自定义签名
只需要在转换命令中添加 --signature_def 参数,明确指定你的模型签名名称即可,修改后的命令如下:
tflite_convert \ --output_file=/tmp/foo.tflite \ --saved_model_dir=/tmp/saved_model \ --signature_def=name_of_my_model
额外优化提示
从你用saved_model_cli输出的信息来看,模型还有一个is_training的布尔输入——这个参数在推理阶段通常应该固定为False。如果转换后的TFLite模型不需要保留这个输入(毕竟推理时不需要启用训练模式),你可以进一步调整命令,明确指定要保留的输入并固定is_training的取值:
tflite_convert \ --output_file=/tmp/foo.tflite \ --saved_model_dir=/tmp/saved_model \ --signature_def=name_of_my_model \ --input_arrays=question1_embedding,question2_embedding \ --input_shapes=1,35,300;1,35,300
如果后续要做INT8全量化,记得准备好校准数据集,通过--representative_dataset参数传入,这样能最大程度保证量化后的模型精度符合预期。
内容的提问来源于stack exchange,提问作者Benjamin Breton
相关产品推荐
相关产品推荐

