例如:
from tensorflow.keras.preprocessing.text import one_hot vocab_size = 5 one_hot('good job', vocab_size) Out[6]: [3, 2]
对于每个单词,它只分配一个整数'3'和'2',而不是一个大小为5的向量,其中包含1和0?
umuewwlo1#
这是这个函数的工作方式。它产生整数而不是OHE。可能他们也因为不自然的用法而反对它。看起来tensorflow.keras.preprocessing.text.one_hot正在被反对。已弃用:tf.keras.text.preprocessing.one_hot不对Tensor进行运算,不建议将其用于新代码。首选使用output_mode='one_hot'的tf.keras.layers.哈希,它通过接受tf.Tensor输入的层提供等效功能。有关预处理层的概述,请参阅预处理层指南。建议用途:
tensorflow.keras.preprocessing.text.one_hot
tf.keras.layers.Hashing( num_bins, mask_value=None, salt=None, output_mode='int', sparse=False, **kwargs )
如果您将output_mode从int修改为multi_hot,您将获得您正在寻找的独热向量。来自文档:层输出的规范。默认为“int”。值可以是“int”、“one_hot”、“multi_hot”或“count”,配置层如下:
int
multi_hot
"int": Return the integer bin indices directly. "one_hot": Encodes each individual element in the input into an array the same size as num_bins, containing a 1 at the input's bin
索引。如果最后一个维的大小为1,则将在该维上进行编码。如果最后一个维的大小不是1,则将为编码输出追加一个新维。“multi_hot”:将输入中的每个样本编码为大小与num_bins相同的单个数组,其中样本中存在的每个bin索引索引都包含1。将最后一个维视为样本维,如果输入形状为(...,sample_length),则输出形状将为(...,num_tokens)。“count”:作为“multi_hot”,但int数组包含bin索引在样本中出现的次数的计数。
1条答案
按热度按时间umuewwlo1#
这是这个函数的工作方式。它产生整数而不是OHE。可能他们也因为不自然的用法而反对它。看起来
tensorflow.keras.preprocessing.text.one_hot
正在被反对。已弃用:tf.keras.text.preprocessing.one_hot不对Tensor进行运算,不建议将其用于新代码。首选使用output_mode='one_hot'的tf.keras.layers.哈希,它通过接受tf.Tensor输入的层提供等效功能。有关预处理层的概述,请参阅预处理层指南。
建议用途:
如果您将output_mode从
int
修改为multi_hot
,您将获得您正在寻找的独热向量。来自文档:
层输出的规范。默认为“int”。值可以是“int”、“one_hot”、“multi_hot”或“count”,配置层如下:
索引。如果最后一个维的大小为1,则将在该维上进行编码。如果最后一个维的大小不是1,则将为编码输出追加一个新维。“multi_hot”:将输入中的每个样本编码为大小与num_bins相同的单个数组,其中样本中存在的每个bin索引索引都包含1。将最后一个维视为样本维,如果输入形状为(...,sample_length),则输出形状将为(...,num_tokens)。“count”:作为“multi_hot”,但int数组包含bin索引在样本中出现的次数的计数。