如何为"广泛而深入"的模型创建一个服务客户端的张量流?

Baz*_*rds 11 java deep-learning tensorflow tensorflow-serving

我已经基于"广泛而深入"的例子创建了一个模型(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/learn/wide_n_deep_tutorial.py).

我已经将模型导出如下:

  m = build_estimator(model_dir)
  m.fit(input_fn=lambda: input_fn(df_train, True), steps=FLAGS.train_steps)
  results = m.evaluate(input_fn=lambda: input_fn(df_test, True), steps=1)

  print('Model statistics:')

  for key in sorted(results):
    print("%s: %s" % (key, results[key]))

  print('Done training!!!')

  # Export model
  export_path = sys.argv[-1]
  print('Exporting trained model to %s' % export_path)

  m.export(
   export_path,
   input_fn=serving_input_fn,
   use_deprecated_input_fn=False,
   input_feature_key=INPUT_FEATURE_KEY
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何创建一个客户端来从这个导出的模型进行预测?还有,我是否正确导出了模型?

最终我也需要能够在Java中做到这一点.我怀疑我可以通过使用gRPC从proto文件创建Java类来实现这一点.

文档非常粗略,因此我在这里问.

非常感谢!

MtD*_*van 2

我写了一个简单的教程Exporting and Serving a TensorFlow Wide & Deep Model

长话短说

要导出估算器,有四个步骤:

  1. 将要导出的特征定义为估计器初始化期间使用的所有特征的列表。

  2. 使用创建功能配置create_feature_spec_for_parsing

  3. 构建一个serving_input_fn适合在服务中使用的input_fn_utils.build_parsing_serving_input_fn.

  4. 使用 导出模型export_savedmodel()

要正确运行客户端脚本,您需要执行以下三个步骤:

  1. 创建脚本并将其放置在 /serving/ 文件夹中的某个位置,例如 /serving/tensorflow_serving/example/

  2. 通过添加py_binary.

  3. 构建并运行模型服务器,例如tensorflow_model_server

  4. 创建、构建并运行一个客户端,该客户端将 tf.Example 发送给我们tensorflow_model_server以进行推理。

有关更多详细信息,请参阅教程本身。