首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止Tensorflow中的TextVectorization为未知和空字符串创建值?

如何防止Tensorflow中的TextVectorization为未知和空字符串创建值?
EN

Stack Overflow用户
提问于 2021-05-19 17:55:51
回答 1查看 90关注 0票数 0

我正在寻找一个热编码字符串张量作为我的数据集管道的一部分。在我看来,这可以通过使用TextVectorization获得字符串张量的整数表示,然后使用one_hot进行转换来实现编码的2d张量。

当我使用TextVectorization时,它似乎会自动尝试将"“映射到0,将词汇表中的字符串映射到1。

代码语言:javascript
复制
import tensorflow as tf
from tensorflow.keras import layers

possible_values = ["a","b","c"]
text_vectorization = layers.experimental.preprocessing.TextVectorization(output_sequence_length=1)
text_vectorization.set_vocabulary(possible_values)

print(text_vectorization.get_vocabulary())

['', '[UNK]', 'a', 'b', 'c']

我可以理解为什么它是有用的,因为它可以处理下面张量中的最后两个值,而不会抛出错误并在过程中为它们创建一个特征。

代码语言:javascript
复制
test_tensor = tf.constant(["b","b","c","b","a","potato",""])

print(text_vectorization.call(test_tensor))

tf.Tensor(
[[3]
 [3]
 [4]
 [3]
 [2]
 [1]
 [0]], shape=(7, 1), dtype=int64)

不过,在我的应用程序中,我想关闭此行为,因为我不需要它。The documentation似乎没有提供禁用它的选项,现在我只是从输出中转到-2,但感觉不太对劲。

有没有更干净的、tensorflow原生的解决方案来生成字符串张量的整数表示?

EN

回答 1

Stack Overflow用户

发布于 2021-05-20 04:42:42

如果要删除元素,则需要使用普通的for-loop对其进行过滤

代码语言:javascript
复制
data = ["b","b","c","b","a","potato",""]
possible_values = ["a","b","c"]

filtered_data = []

for item in data:
    if item in possible_values:
        filtered_data.append(item)

print(filtered_data)

或使用列表理解时更短

代码语言:javascript
复制
data = ["b","b","c","b","a","potato",""]
possible_values = ["a","b","c"]

filtered_data = [x for x in data if x in possible_values]

print(filtered_data)

所以所有这些都不需要任何特殊的函数。

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

https://stackoverflow.com/questions/67600983

复制
相关文章

相似问题

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