我曾与Google合作,训练了一个简单的mnist示例模型,以使自己熟悉tensorflow服务,但我的tensorflow模型服务器无法读取我的protobuf文件。真的很奇怪
我试图加载一个不同的protobuf模型,该模型是从github下载的,并且可以正常工作,这意味着我的tensorflow服务器正在运行。之后,我使用了一个keras模型,并使用tf.saved_model.simple_save()
函数将其导出,并且可以正常工作。最后,我尝试将自己的导出protobuf模型导入到我的tensorflow服务器无法读取的代码中,然后一切正常。
我希望有人能帮助我。
完整的错误消息:Loading servable: {name: mnist_test version: 1} failed: Data loss: Can't parse /home/models/mnist_test/1/saved_model.pb as binary proto
我的导出代码:
builder = tf.saved_model.builder.SavedModelBuilder(export_path)
model_inputs = tf.saved_model.utils.build_tensor_info(X_placeholder)
model_outputs = tf.saved_model.utils.build_tensor_info(output)
signature_definition = tf.saved_model.signature_def_utils.build_signature_def(
inputs={'inputs': model_inputs},
outputs={'outputs': model_outputs},
method_name= tf.saved_model.signature_constants.PREDICT_METHOD_NAME)
builder.add_meta_graph_and_variables(
sess, [tf.saved_model.tag_constants.SERVING],
signature_def_map={tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature_definition})
builder.save()