我花了几个小时试图设置Tensorflow-hub模块“通用句子编码器”的Tensorflow服务这里有一个类似的问题:
如何使用张量流服务使张量流中心嵌入可用?
我一直在Windows机器上这样做。
这是我用来构建模型的代码:
import tensorflow as tf
import tensorflow_hub as hub
MODEL_NAME = 'test'
VERSION = 1
SERVE_PATH = './models/{}/{}'.format(MODEL_NAME, VERSION)
with tf.Graph().as_default():
module = hub.Module("https://tfhub.dev/google/universal-sentence-
encoder/1")
text = tf.placeholder(tf.string, [None])
embedding = module(text)
init_op = tf.group([tf.global_variables_initializer(),
tf.tables_initializer()])
with tf.Session() as session:
session.run(init_op)
tf.saved_model.simple_save(
session,
SERVE_PATH,
inputs = {"text": text},
outputs = {"embedding": embedding},
legacy_init_op = tf.tables_initializer()
)
我已经到了运行以下行的地步:
saved_model_cli show --dir ${PWD}/models/test/1 --tag_set serve --signature_def serving_default
给我以下结果:
The given SavedModel SignatureDef contains the following input(s):
inputs['text'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: Placeholder:0
The given SavedModel SignatureDef contains the following output(s):
outputs['embedding'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 512)
name: module_apply_default/Encoder_en/hidden_layers/l2_normalize:0
然后我尝试跑步:
saved_model_cli run --dir ${PWD}/models/test/1 --tag_set serve --signature_def serving_default --input_exprs 'text=["what this is"]'
这给出了错误:
File "<string>", line 1
[what this is]
^
SyntaxError: invalid syntax
我曾尝试更改“text=[“what this is”]”部分的格式,但对我来说没有任何效果。
不管这部分是否有效,主要目标是建立服务模块并创建一个可调用的API。
我试过docker,如下行:
docker run -p 8501:8501 --name tf-serve -v ${PWD}/models/:/models -t tensorflow/serving --model_base_path=/models/test
事情似乎设置得很好:
Building single TensorFlow model file config: model_name: model model_base_path: /models/test
2018-10-09 07:05:08.692140: I tensorflow_serving/model_servers/server_core.cc:462] Adding/updating models.
2018-10-09 07:05:08.692301: I tensorflow_serving/model_servers/server_core.cc:517] (Re-)adding model: model
2018-10-09 07:05:08.798733: I tensorflow_serving/core/basic_manager.cc:739] Successfully reserved resources to load servable {name: model version: 1}
2018-10-09 07:05:08.798841: I tensorflow_serving/core/loader_harness.cc:66] Approving load for servable version {name: model version: 1}
2018-10-09 07:05:08.798870: I tensorflow_serving/core/loader_harness.cc:74] Loading servable version {name: model version: 1}
2018-10-09 07:05:08.798904: I external/org_tensorflow/tensorflow/contrib/session_bundle/bundle_shim.cc:360] Attempting to load native SavedModelBundle in bundle-shim from: /models/test/1
2018-10-09 07:05:08.798947: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:31] Reading SavedModel from: /models/test/1
2018-10-09 07:05:09.055822: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:54] Reading meta graph with tags { serve }
2018-10-09 07:05:09.338142: I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2018-10-09 07:05:09.576751: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:162] Restoring SavedModel bundle.
2018-10-09 07:05:28.975611: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:138] Running MainOp with key saved_model_main_op on SavedModel bundle.
2018-10-09 07:06:30.941577: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:259] SavedModel load for tags { serve }; Status: success. Took 82120946 microseconds.
2018-10-09 07:06:30.990252: I tensorflow_serving/servables/tensorflow/saved_model_warmup.cc:83] No warmup data file found at /models/test/1/assets.extra/tf_serving_warmup_requests
2018-10-09 07:06:31.046262: I tensorflow_serving/core/loader_harness.cc:86] Successfully loaded servable version {name: model version: 1}
2018-10-09 07:06:31.184541: I tensorflow_serving/model_servers/server.cc:285] Running gRPC ModelServer at 0.0.0.0:8500 ...
[warn] getaddrinfo: address family for nodename not supported
2018-10-09 07:06:31.221644: I tensorflow_serving/model_servers/server.cc:301] Exporting HTTP/REST API at:localhost:8501 ...
[evhttp_server.cc : 235] RAW: Entering the event loop ...
我已经试过了
curl http://localhost:8501/v1/models/test
这给了
{ "error": "Malformed request: GET /v1/models/test:predict" }
和
curl -d '{"text": "Hello"}' -X POST http://localhost:8501/v1/models/test:predict
它提供了
{ "error": "JSON Parse error: Invalid value. at offset: 0" }
类似的问题在这里
Tensorflow服务:Rest API返回“格式错误的请求”错误
只是寻找任何方法来让这个模块服务。谢谢。
我终于明白了。我会在这里发布我所做的,以防其他人也尝试做同样的事情。
我使用saved_model_cli运行命令的问题是引号(使用Windows命令提示符)。将'text=["what this"]'
更改为"text=['what this']"
POST请求的问题有两方面。第一,我注意到模特的名字是model,所以应该是http://localhost:8501/v1/models/model:predict
其次,输入格式不正确。我使用了Postman,请求正文如下所示:{"输入":{"文本":["Hello"]}}
我想从这里尝试通用句子编码器链接。 这是我在Ubuntu 18.04和Jupyter笔记本上运行的代码 它一直在运行,什么也没发生。它在下载什么东西吗?我已经等了很长时间了。除了以下内容,它什么也没显示: 我检查了我的tensorflow装置。看起来很好。有什么故障排除建议吗?
Tensorflow 1.12发行说明指出:“Keras模型现在可以直接导出为SavedModel格式(tf.contrib.saved_model.save_Keras_mode()),并与Tensorflow服务一起使用。”。所以我试了一下- 我用一行代码导出了一个简单的模型。但是,Tensorflow服务不识别模型。我猜问题出在docker调用上,可能是模型定义中缺少了“signature_
我使用通用句子编码器精简版创建了一个保存的模型。如果我使用tf.saved_model加载器加载已保存的模型,它工作得很好。 但是,如果我尝试使用Tensorflow服务为模型提供服务,我会得到以下错误: “错误”: “索引[3] = 1 不在 [0, 1)\n\t [[节点: lite_module_apply_default/Encoder_en/柯纳转换器/ClipToMax长度/Gathe
null 但这也不起作用。我如何添加'X'作为这个switch语句的默认值,什么可以帮助我防止自己再次犯这个错误?
我下面的代码产生了常规的tensorflow模型,但当我试图将其转换为tensorflow lite时,它不起作用,我遵循了以下文档。 https://www.tensorflow.org/tutorials/estimator/linear1 https://www.tensorflow.org/lite/guide/get_started 错误信息 文档摘录 TensorFlow Lite转换
问题内容: 您可以使用以下名称获取张量 但是,您可以获得诸如之类的操作,还是队列中的操作? 在我的第一个模型中,我返回了函数所需的所有张量和运算。但是张量的列表很难看。在以后的模型中,我将所有张量和操作数丢入字典中,以方便访问。这次,我以为我只是在需要时按名称查找张量,但我不知道该如何使用ops。 还是有更好的方法来做到这一点?我发现到处都需要各种张量和操作。训练,推理代码,测试用例,因此,需要一