Развертывание модели в Google Cloud: не удалось создать версию. Ошибка проверки модели: SavedModel должен содержать ровно один метаграф с тегом: serve

Я пытаюсь развернуть в Google Cloud модель, обученную локально. Я обучил модель и сохранил график .pb, а также провел квантизацию модели. Однако теперь, когда я пытаюсь развернуть его, я получаю следующую ошибку:

Create Version failed. Model validation failed: SavedModel 
must contain exactly one metagraph with tag: serve

Кто-нибудь знает, как добавить тег к модели?


person Daniel Zapata    schedule 09.02.2018    source источник
comment
Эта ссылка может оказаться полезной: tensorflow.org/serving/serving_basic.   -  person J.E.K    schedule 09.02.2018
comment
Можете ли вы предоставить более подробную информацию о том, как вы экспортируете свою модель (фрагменты кода были бы наиболее полезны)? Когда вы экспортируете модели, вам разрешено сохранять более одного графика, но служба ожидает только один, и он должен называться serve.   -  person rhaertel80    schedule 09.02.2018
comment
@ rhaertel80 Я смог решить эту проблему. Я уже публикую ответ. Большое спасибо за Вашу помощь :)   -  person Daniel Zapata    schedule 09.02.2018


Ответы (1)


Поскольку ответ Сапаты все же оставил кое-что для воображения. Вот мой код:

    with tf.Session() as sess:
        # init = tf.initialize_all_variables()
        init = tf.global_variables_initializer()
        input_x = sess.graph.get_tensor_by_name("0:0")  # input
        outputs1 = sess.graph.get_tensor_by_name("add_10:0")
        output_tf_pb = sess.run(
            [outputs1], feed_dict={input_x: np.random.randn(1, 3, 64, 64)}
        )
        # output_tf_pb = sess.run([outputs1, outputs2], feed_dict= 
    {input_x:np.random.randn(1, 3, 224, 224)})
        print("output_tf_pb = {}".format(output_tf_pb))

    # os.removedirs("output2")
    builder = tf.saved_model.builder.SavedModelBuilder("output2")
    prediction_signature = 
    tf.saved_model.signature_def_utils.build_signature_def(
        inputs={"images": tf.saved_model.utils.build_tensor_info(input_x)},
        outputs={"scores": tf.saved_model.utils.build_tensor_info(outputs1)},
        method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME,
    )
    tensor_info_x = tf.saved_model.utils.build_tensor_info(input_x)
    tensor_info_y = tf.saved_model.utils.build_tensor_info(outputs1)

    classification_signature = tf.saved_model.signature_def_utils.build_signature_def(
        inputs={tf.saved_model.signature_constants.CLASSIFY_INPUTS: tensor_info_x},
        outputs={
            tf.saved_model.signature_constants.CLASSIFY_OUTPUT_CLASSES: tensor_info_y
        },
        method_name=tf.saved_model.signature_constants.CLASSIFY_METHOD_NAME,
    )

    builder.add_meta_graph_and_variables(
        sess,
        [tf.saved_model.tag_constants.SERVING],
        signature_def_map={
            "predict_images": prediction_signature,
            tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: classification_signature,
        },
        main_op=tf.tables_initializer(),
    )
    builder.save()

Полный файл можно найти по адресу:

https://gist.github.com/takotab/ccd131fb06d4cdd2b786b3ef83c62ade

person NeoTT    schedule 26.04.2019