【问题标题】:How do I convert a CloudML Alpha model to a SavedModel?如何将 CloudML Alpha 模型转换为 SavedModel?
【发布时间】:2017-08-15 13:40:11
【问题描述】:

在 CloudML 在线预测服务的 alpha 版本中,导出模型的格式为:

inputs = {"x": x, "y_bytes": y}
g.add_to_collection("inputs", json.dumps(inputs))
outputs = {"a": a, "b_bytes": b}
g.add_to_collection("outputs", json.dumps(outputs))

我想在不重新训练我的模型的情况下将其转换为 SavedModel。我该怎么做?

【问题讨论】:

    标签: google-cloud-ml google-cloud-ml-engine


    【解决方案1】:

    我们可以通过导入旧模型、创建签名并重新导出它来将其转换为 SavedModel。这段代码未经测试,但类似这样的东西应该可以工作:

    import json
    import tensorflow as tf
    from tensorflow.contrib.session_bundle import session_bundle
    
    # Import the "old" model
    session, _ = session_bundle.load_session_bundle_from_path(export_dir)
    
    # Define the inputs and the outputs for the SavedModel
    old_inputs = json.loads(tf.get_collection('inputs'))
    inputs = {name: tf.saved_model.utils.build_tensor_info(tensor)
              for name, tensor in old_inputs}
    
    old_outputs = json.loads(tf.get_collection('outputs'))
    outputs = {name: tf.saved_model.utils.build_tensor_info(tensor)
               for name, tensor in old_outputs}
    
    signature = tf.saved_model.signature_def_utils.build_signature_def(
        inputs=inputs,
        outputs=outputs,
        method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME
    )
    
    # Save out the converted model
    b = builder.SavedModelBuilder(new_export_dir)
    b.add_meta_graph_and_variables(session,
                                   [tf.saved_model.tag_constants.SERVING],
                                   signature_def_map={'serving_default': signature})
    b.save()
    

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 2019-06-04
      • 2023-04-02
      • 2020-10-14
      • 2020-03-09
      • 2017-11-11
      • 2020-08-25
      • 2019-05-06
      • 2020-08-25
      相关资源
      最近更新 更多