Pra*_*dya 8 tensorflow word-embedding tensorflow-serving
我正在尝试使用tensorflow hub的嵌入模块作为可服务.我是tensorflow的新手.目前,我使用Universal Sentence Encoder嵌入作为查找将句子转换为嵌入,然后使用这些嵌入来查找与另一个句子的相似性.
我目前将句子转换为嵌入的代码是:
with tf.Session() as session:
session.run([tf.global_variables_initializer(), tf.tables_initializer()])
sen_embeddings = session.run(self.embed(prepared_text))
Run Code Online (Sandbox Code Playgroud)
Prepared_text是一个句子列表.如何使用此模型并使其成为可维护的?
小智 8
现在你可能需要手工完成.这是我的解决方案,类似于之前的答案,但更一般 - 显示如何使用任何其他模块而不猜测输入参数,以及扩展验证和使用:
import tensorflow as tf
import tensorflow_hub as hub
from tensorflow.saved_model import simple_save
export_dir = "/tmp/tfserving/universal_encoder/00000001"
with tf.Session(graph=tf.Graph()) as sess:
module = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/2")
input_params = module.get_input_info_dict()
# take a look at what tensor does the model accepts - 'text' is input tensor name
text_input = tf.placeholder(name='text', dtype=input_params['text'].dtype,
shape=input_params['text'].get_shape())
sess.run([tf.global_variables_initializer(), tf.tables_initializer()])
embeddings = module(text_input)
simple_save(sess,
export_dir,
inputs={'text': text_input},
outputs={'embeddings': embeddings},
legacy_init_op=tf.tables_initializer())
Run Code Online (Sandbox Code Playgroud)
感谢module.get_input_info_dict()你知道你需要传递给模型什么名字张-你用这个名字作为一个键inputs={}的simple_save方法.
请记住,要为模型提供服务,它需要位于以版本结尾的目录路径中,这就是为什么'00000001'最后一个路径saved_model.pb所在的原因.
导出模块后,最快的方式是查看您的模型是否正确导出以进行服务是使用saved_model_cli API:
saved_model_cli run --dir /tmp/tfserving/universal_encoder/00000001 --tag_set serve --signature_def serving_default --input_exprs 'text=["what this is"]'
Run Code Online (Sandbox Code Playgroud)
从docker提供模型:
docker pull tensorflow/serving
docker run -p 8501:8501 -v /tmp/tfserving/universal_encoder:/models/universal_encoder -e MODEL_NAME=universal_encoder -t tensorflow/serving
Run Code Online (Sandbox Code Playgroud)
目前,Tensorflow Serving 无法直接使用 hub 模块。您必须将模块加载到空图中,然后使用SavedModelBuilder. 例如:
import tensorflow as tf
import tensorflow_hub as hub
with tf.Graph().as_default():
module = hub.Module("http://tfhub.dev/google/universal-sentence-encoder/2")
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,
"/tmp/serving_saved_model",
inputs = {"text": text},
outputs = {"embedding": embedding},
legacy_init_op = tf.tables_initializer()
)
Run Code Online (Sandbox Code Playgroud)
/tmp/serving_saved_model这将以所需的格式导出您的模型(到文件夹)以供服务。之后,您可以按照此处文档中给出的说明进行操作:https ://www.tensorflow.org/serving/serving_basic
| 归档时间: |
|
| 查看次数: |
1748 次 |
| 最近记录: |