2017-03-24 2 views
6

Ich versuche, eine umgeschaltete Version des Startmodells auf Google Cloud ml-Engine bereitzustellen. Ich sammelte Informationen aus dem SavedModel documentation, diesem reference, und diesem post von rhaertel80. Ich habe mein umgeschultes Modell erfolgreich in ein SavedModel exportiert, es in einen Bucket hochgeladen und versucht, es auf eine ml-Engine-Version zu portieren.Bereitstellen von Neuanfängen SavedModel zu Google Cloud ml Engine

Diese letzte Aufgabe schafft tatsächlich eine Version, aber es gibt diesen Fehler:

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

Und wenn ich versuche, Vorhersagen aus dem Modell über Kommandozeile zu bekommen bekomme ich diese Fehlermeldung: "message": "Field: name Error: Online prediction is unavailable for this version. Please verify that CreateVersion has completed successfully."

Ich habe mehrere Versuche unternommen, verschiedene method_name und tag Optionen auszuprobieren, aber keiner hat funktioniert.

Der Code zum ursprünglichen Gründung Code hinzugefügt ist

### 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() 

Eine weitere Überlegung, die helfen könnten: Ich habe eine exportierte ein trained_graph.pb mit graph_def.SerializeToString() verwendet die Vorhersagen vor Ort zu bekommen und es funktioniert gut, aber wenn ich ersetzen es mit der saved_model.pb schlägt fehl.

Irgendwelche Vorschläge, was das Problem sein könnte?

+0

würden Sie eine Probe request.json etwas dagegen zu teilen, die Ihre Signatur übereinstimmt? Ich kämpfe mit diesem Fehler. 'prediction_lib.PredictionError: (4," Exception beim Ausführen des Graphen: Kann den Wert von shape (1,) für Tensor u'DecodeJpeg/contents: 0 'nicht liefern, der Shape'() '")' hat – Billy

Antwort

7

In Ihrem signature_def_map, verwenden Sie die Taste 'serving_default', die in signature_constants als DEFAULT_SERVING_SIGNATURE_DEF_KEY definiert:

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