Machine learning 使用Tensorflow服务时,如何存储字典并将单词映射到int?

Machine learning 使用Tensorflow服务时,如何存储字典并将单词映射到int?,machine-learning,tensorflow,lstm,tensorflow-serving,word-embedding,Machine Learning,Tensorflow,Lstm,Tensorflow Serving,Word Embedding,我已经在Tensorflow上训练了一个LSTM RNN分类模型。我正在保存和恢复检查点,以便重新培训和使用模型进行测试。现在我想使用Tensorflow服务,以便在生产中使用该模型 最初,我会通过一个语料库进行解析,创建字典,然后用字典将字符串中的单词映射为整数。然后,我会将这个字典存储在pickle文件中,当恢复检查点并对数据集进行重新培训时,或者仅仅为了使用模型,可以重新加载该文件,以便映射是一致的。使用SavedModelBuilder保存模型时,如何存储此词典 我的神经网络代码如下。保

我已经在Tensorflow上训练了一个LSTM RNN分类模型。我正在保存和恢复检查点,以便重新培训和使用模型进行测试。现在我想使用Tensorflow服务,以便在生产中使用该模型

最初,我会通过一个语料库进行解析,创建字典,然后用字典将字符串中的单词映射为整数。然后,我会将这个字典存储在pickle文件中,当恢复检查点并对数据集进行重新培训时,或者仅仅为了使用模型,可以重新加载该文件,以便映射是一致的。使用SavedModelBuilder保存模型时,如何存储此词典

我的神经网络代码如下。保存模型的代码即将结束(我将概述整个上下文结构):

我不完全确定这是否是保存此类模型的正确方法,但这是我在文档和在线教程中找到的唯一实现

我还没有在文档中找到任何保存词典的示例或明确指南,也没有找到如何在恢复savedModel时使用词典的示例或明确指南

当使用检查点时,我会在运行会话之前加载pickle文件。如何还原此savedModel,以便使用字典使用相同的单词到int映射?是否有任何具体的方法可以保存或加载模型


我还添加了输入作为输入签名的输入。这是单词映射后的一系列整数。我无法指定字符串作为输入,因为我得到了一个
AttributeError:'str'对象没有属性“dtype”
。在这种情况下,在生产中的模型中,单词如何精确地映射到整数?

使用
tf.feature\u列中的实用程序实现预处理,在服务中使用相同的整数映射将非常简单。

一种方法是将词汇存储在模型的图形中。然后将随模型一起装运

...


vocab_table = lookup.index_table_from_file(vocabulary_file='data/vocab.csv', num_oov_buckets=1, default_value=-1)
text = features[commons.FEATURE_COL]
words = tf.string_split(text)
dense_words = tf.sparse_tensor_to_dense(words, default_value=commons.PAD_WORD)
word_ids = vocab_table.lookup(dense_words)

padding = tf.constant([[0, 0], [0, commons.MAX_DOCUMENT_LENGTH]])
# Pad all the word_ids entries to the maximum document length
word_ids_padded = tf.pad(word_ids, padding)
word_id_vector = tf.slice(word_ids_padded, [0, 0], [-1, commons.MAX_DOCUMENT_LENGTH])

来源:

即使如此,在将输入中的所有单词映射为整数时,您仍然需要一个或多个单词的词汇表,除非我遗漏了什么。你会把这本字典存放在哪里。你能详细说明一下吗?
...


vocab_table = lookup.index_table_from_file(vocabulary_file='data/vocab.csv', num_oov_buckets=1, default_value=-1)
text = features[commons.FEATURE_COL]
words = tf.string_split(text)
dense_words = tf.sparse_tensor_to_dense(words, default_value=commons.PAD_WORD)
word_ids = vocab_table.lookup(dense_words)

padding = tf.constant([[0, 0], [0, commons.MAX_DOCUMENT_LENGTH]])
# Pad all the word_ids entries to the maximum document length
word_ids_padded = tf.pad(word_ids, padding)
word_id_vector = tf.slice(word_ids_padded, [0, 0], [-1, commons.MAX_DOCUMENT_LENGTH])