首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TensorFlow TextVectorization从泡菜中装入后生产无填充的粗糙张量

TensorFlow TextVectorization从泡菜中装入后生产无填充的粗糙张量
EN

Stack Overflow用户
提问于 2021-12-07 06:38:32
回答 1查看 374关注 0票数 1

我有一个TensorFlow TextVectorization层,名为"eng_vectorization":

代码语言:javascript
复制
vocab_size = 15000
sequence_length = 20

eng_vectorization = TextVectorization(max_tokens = vocab_size,
                                  output_mode = 'int',
                                  output_sequence_length = sequence_length)

train_eng_texts = [pair[0] for pair in text_pairs]  # Where text_pairs is my english-spanish text data.
eng_vectorization.adapt(train_eng_texts)

我将它保存在一个泡菜文件中,使用以下代码:

代码语言:javascript
复制
pickle.dump({'config': eng_vectorization.get_config(),
             'weights': eng_vectorization.get_weights()},
             open("english_vocab.pkl", "wb"))

然后,我以new_eng_vectorization的形式正确地加载了那个泡菜文件。

代码语言:javascript
复制
from_disk = pickle.load(open("english_vocab.pkl", "rb"))

new_eng_vectorization = TextVectorization.from_config(from_disk['config'])
new_eng_vectorization.adapt(tf.data.Dataset.from_tensor_slices(["xyz"]))
new_eng_vectorization.set_weights(from_disk['weights'])

现在,我希望以前的向量化eng_vectorization和新加载的向量化new_eng_vectorization都能同样工作,但它们不是。

原始矢量化的输出,eng_vectorization(['Hello people'])是张量:

代码语言:javascript
复制
<tf.Tensor: shape=(1, 20), dtype=int64, numpy=
array([[1800,  110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
           0,    0,    0,    0,    0,    0,    0,    0,    0]])>

而酸洗矢量化的输出,new_eng_vectorization(['Hello people'])是一个破烂的张量。

代码语言:javascript
复制
<tf.RaggedTensor [[1800, 110]]>

eng_vectorizationnew_eng_vectorization都有相同的配置:

代码语言:javascript
复制
{'batch_input_shape': (None,),
 'dtype': 'string',
 'idf_weights': None,
 'max_tokens': 15000,
 'name': 'text_vectorization',
 'ngrams': None,
 'output_mode': 'int',
 'output_sequence_length': 20,
 'pad_to_max_tokens': False,
 'ragged': False,
 'sparse': False,
 'split': 'whitespace',
 'standardize': 'lower_and_strip_punctuation',
 'trainable': True,
 'vocabulary': None}

我认为我保存矢量化的方法有一些问题,我如何解决这个问题?我正在使用它进行部署,这就是为什么我希望这个经过腌制的矢量化能像以前的那样工作。

以下是Google到可复制代码的链接-单击此处

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 11:43:28

这个问题与最近的一个错误有关,在这个错误中,当output_mode来自保存的配置时,它的设置不正确。

这样做是可行的:

代码语言:javascript
复制
pickle.dump({'config': eng_vectorization.get_config(),
             'weights': eng_vectorization.get_weights()},
             open("english_vocab.pkl", "wb"))

from_disk = pickle.load(open("english_vocab.pkl", "rb"))

new_eng_vectorization = TextVectorization(max_tokens=from_disk['config']['max_tokens'],
                                          output_mode='int',
                                          output_sequence_length=from_disk['config']['output_sequence_length'])

new_eng_vectorization.adapt(tf.data.Dataset.from_tensor_slices(["xyz"]))
new_eng_vectorization.set_weights(from_disk['weights'])
new_eng_vectorization(['Hello people'])
代码语言:javascript
复制
<tf.Tensor: shape=(1, 20), dtype=int64, numpy=
array([[1800,  110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
           0,    0,    0,    0,    0,    0,    0,    0,    0]])>

目前,这是不正确的:

代码语言:javascript
复制
pickle.dump({'config': eng_vectorization.get_config(),
             'weights': eng_vectorization.get_weights()},
             open("english_vocab.pkl", "wb"))

from_disk = pickle.load(open("english_vocab.pkl", "rb"))
new_eng_vectorization = TextVectorization(max_tokens=from_disk['config']['max_tokens'],
                                          output_mode=from_disk['config']['output_mode'],
                                          output_sequence_length=from_disk['config']['output_sequence_length'])

new_eng_vectorization.adapt(tf.data.Dataset.from_tensor_slices(["xyz"]))
new_eng_vectorization.set_weights(from_disk['weights'])
new_eng_vectorization(['Hello people'])
代码语言:javascript
复制
<tf.RaggedTensor [[1800, 110]]>

即使'int'from_disk['config']['output_mode']是相等的,数据类型也是相同的。不管怎样,你现在可以用这个解决办法了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70255845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档