Reputation: 1
I copied and used this code. url : http://fdahms.com/2017/03/05/tensorflow-serving-jvm-client/
but An error occurs when deploying a version.
Model validation failed: Serving metagraph must contain exactly one SignatureDef with key: serving_default
I was trying to fix the code with reference to https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/mnist_saved_model.py
import tensorflow as tf
x = tf.placeholder(tf.float32, shape=(None))
y = tf.placeholder(tf.float32, shape=(None))
three = tf.Variable(3, dtype= tf.float32)
z = tf.scalar_mul(three, x) + y
import os
from tensorflow.python.util import compat
model_version = 1
path = os.path.join("three_x_plus_y", str(model_version))
builder = tf.saved_model.builder.SavedModelBuilder(path)
legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
tensor_info_x = tf.saved_model.utils.build_tensor_info(x)
tensor_info_y = tf.saved_model.utils.build_tensor_info(y)
tensor_info_z = tf.saved_model.utils.build_tensor_info(z)
prediction_signature = (
tf.saved_model.signature_def_utils.build_signature_def(
inputs= {'egg': tensor_info_x, 'bacon': tensor_info_y},
outputs= {'spam': tensor_info_z},
method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
builder.add_meta_graph_and_variables(
sess,[tf.saved_model.tag_constants.SERVING],
signature_def_map= {
"magic_model": prediction_signature},
legacy_init_op=legacy_init_op
)
builder.save()
But I got the same error...
i'm using the 'Google Cloud Machine Running Engine' i need help ..thank you for reading.
Upvotes: 0
Views: 219
Reputation: 8379
Change the key in the signature_def_map
from magic_model
to serving_default
.
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
builder.add_meta_graph_and_variables(
sess,[tf.saved_model.tag_constants.SERVING],
signature_def_map= {
"serving_default": prediction_signature},
legacy_init_op=legacy_init_op
)
Upvotes: 1