【问题标题】:Use `tf.contrib.predictor` to predict on batches from `tf.estimator.export_savedmodel` for TF 1.13使用 `tf.contrib.predictor` 预测来自 TF 1.13 的 `tf.estimator.export_savedmodel` 的批次
【发布时间】:2019-11-13 18:12:08
【问题描述】:

我找到了几个示例来加载我保存的估计器 my_estimator.export_savedmodel(export_dir, export_input_fn) 模型,作为预测器 predictor = tf.contrib.predictor.from_saved_model(export_dir)。当我的tf.train.Example 只有一项时,这非常有用。如何使它适用于 TF 1.13 的批处理?

model_input= tf.train.Example(features=tf.train.Features(feature={
      'browser_name': tf.train.Feature(bytes_list=tf.train.BytesList(value=[b"chrome", b"ie"])),
      'version': tf.train.Feature(float_list=tf.train.FloatList(value=[8.0, 11.0]))     
  })).SerializeToString()
predictor({"inputs":[model_input]})

当每个特征有多个输入时调用失败。

【问题讨论】:

    标签: python tensorflow tensorflow-serving tensorflow-estimator


    【解决方案1】:

    这是一个使用 tensorflow 1.13.1 的工作示例:

    import tensorflow as tf
    import pandas as pd 
    import numpy as np
    
    
    prod_export_dir = 'my_model_dir'
    data =  pd.read_csv('my_data.csv')
    
    predictor = tf.contrib.predictor.from_saved_model(prod_export_dir)
    
    model_input = {}
    for k, v in predictor.feed_tensors.items():
        model_input[k] = np.array(data[k].tolist(), dtype=v.dtype.as_numpy_dtype)
    
    prediction = predictor(model_input)
    

    【讨论】:

    • 谢谢!是否有 2.x 的等价物?我只找到需要将每个示例序列化为字符串并传递给tf.saved_model.load(MODEL_PATH).signatures["predict"] 实例的示例
    【解决方案2】:
    predictor({"inputs":[model_input1, model_input2]})
    

    可行,但这需要手动将数据枚举到多个 tf.train.Example 实例中

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多