2017-03-24 101 views
6

我想部署在谷歌云毫升引擎的初始模型的培训版本。从SavedModel documentationreferencepost收集rhaertel80的信息后,我将我的再培训模型成功导出到SavedModel,并将其上传到存储桶并尝试将其部署到ml引擎版本。部署再培训以来SavedModel谷歌云毫升引擎

这最后的任务实际上创建了一个版本,但它输出这样的错误:

Create Version failed. Bad model detected with error: "Error loading the model: Unexpected error when loading the model"

,当我尝试通过命令行来从模型的预测结果我收到此错误信息: "message": "Field: name Error: Online prediction is unavailable for this version. Please verify that CreateVersion has completed successfully."

我做了几次尝试,尝试了不同的method_nametag选项,但都没有工作。

加入到最初构想代码的代码是

### DEFINE SAVED MODEL SIGNATURE 

    in_image = graph.get_tensor_by_name('DecodeJpeg/contents:0') 
    inputs = {'image_bytes': tf.saved_model.utils.build_tensor_info(in_image)} 

    out_classes = graph.get_tensor_by_name('final_result:0') 
    outputs = {'prediction': tf.saved_model.utils.build_tensor_info(out_classes)} 

    signature = tf.saved_model.signature_def_utils.build_signature_def(
     inputs=inputs, 
     outputs=outputs, 
     method_name='tensorflow/serving/predict' 
) 


    ### SAVE OUT THE MODEL 

    b = saved_model_builder.SavedModelBuilder('new_export_dir') 
    b.add_meta_graph_and_variables(sess, 
           [tf.saved_model.tag_constants.SERVING], 
           signature_def_map={'predict_images': signature}) 
    b.save() 

另一个考虑可能会有所帮助: 我已经使用了出口与graph_def.SerializeToString()一个trained_graph.pb得到本地的预测,它工作正常,但是当我替补它与saved_model.pb它失败。

关于这个问题可能有什么建议?

+0

,你会介意分享你的签名相匹配的样本request.json?我正在努力解决这个错误。 '预测_lib.PredictionError:(4,“运行图形时出现异常:无法为Tensor u'DecodeJpeg/contents:0提供shape(1,)的值,其形状为'()'”)' – Billy

回答

7

在你signature_def_map,用钥匙“serving_default”,这是在signature_constantsDEFAULT_SERVING_SIGNATURE_DEF_KEY定义:

b.add_meta_graph_and_variables(sess, 
           [tf.saved_model.tag_constants.SERVING], 
           signature_def_map={'serving_default': signature})