【问题标题】:How do I export an eager execution model?如何导出一个急切的执行模型?
【发布时间】:2019-04-13 07:01:27
【问题描述】:

完成我的模型后,我现在希望按照 TensorFlow 网站上的 this 教程导出和部署它。但是,没有迹象表明如何在急切执行中执行此操作,我无法向builder.add_meta_graph_and_variables() 提供会话或图表。

这是我的代码需要急切和图形兼容的情况,还是我需要保存我的模型、将其导入会话并从那里导出的情况?

【问题讨论】:

  • 参见 Eager Execution 指南中的 Work with graphs。正如它所说,“部署为急切执行而编写的代码更加困难”,您需要自己做一些额外的工作。也就是说,eager mode will become even more relevant in the future,我们可能会看到该领域的改进。
  • 感谢jdehesa的回复!我期待 2.0,但它可能要到 12 月才会发布。在“从模型生成图形,或者直接在服务器上运行 Python 运行时和代码”之间,我想我会尝试前者。这似乎与我在 this 中提出的问题相同,因为许多方法仅适用于图形或 Eager,而不适用于两者。

标签: tensorflow tensorflow-serving


【解决方案1】:

TF 2.0 Alpha 支持导出/保存 Eager Execution 模型(默认为 2.0 中的 Eager Execution)。 SavedModel 包含一个完整的 TensorFlow 程序,包括权重和计算。

相同的示例代码如下所示:

!pip install -q tensorflow==2.0.0-alpha0
import tensorflow as tf

pretrained_model = tf.keras.applications.MobileNet()
tf.saved_model.save(pretrained_model, "/tmp/mobilenet/1/")

#Loading the saved model
loaded = tf.saved_model.load("/tmp/mobilenet/1/")
infer = loaded.signatures["serving_default"]

为模型服务:

nohup tensorflow_model_server \
  --rest_api_port=8501 \
  --model_name=mobilenet \
  --model_base_path="/tmp/mobilenet" >server.log 2>&1

#Sending the Request for Inference

!pip install -q requests
import json
import numpy
import requests
data = json.dumps({"signature_name": "serving_default",
                   "instances": x.tolist()})
headers = {"content-type": "application/json"}
json_response = requests.post('http://localhost:8501/v1/models/mobilenet:predict',
                              data=data, headers=headers)
predictions = numpy.array(json.loads(json_response.text)["predictions"])

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-06-20
  • 2019-04-25
  • 2020-08-28
  • 2021-03-19
  • 2012-08-08
  • 2018-11-23
  • 2019-06-23
  • 1970-01-01
相关资源
最近更新 更多