CategoryEncoding 类keras.layers.CategoryEncoding(
num_tokens=None, output_mode="multi_hot", sparse=False, **kwargs
)
对整数特征进行编码的预处理层。
该层提供了在已知 token 总数的情况下将数据压缩为分类编码的选项。它接受整数值作为输入,并输出这些输入的密集或稀疏表示。对于 token 总数未知的整数输入,请改用 keras.layers.IntegerLookup。
注意:该层可以在 tf.data 或 grain 管道中使用(无论您使用的是哪个后端),且是安全的。
示例
对数据进行独热编码
>>> layer = keras.layers.CategoryEncoding(
... num_tokens=4, output_mode="one_hot")
>>> layer([3, 2, 0, 1])
array([[0., 0., 0., 1.],
[0., 0., 1., 0.],
[1., 0., 0., 0.],
[0., 1., 0., 0.]]>
对数据进行多热编码
>>> layer = keras.layers.CategoryEncoding(
... num_tokens=4, output_mode="multi_hot")
>>> layer([[0, 1], [0, 0], [1, 2], [3, 1]])
array([[1., 1., 0., 0.],
[1., 0., 0., 0.],
[0., 1., 1., 0.],
[0., 1., 0., 1.]]>
在 "count" 模式下使用加权输入
>>> layer = keras.layers.CategoryEncoding(
... num_tokens=4, output_mode="count")
>>> count_weights = np.array([[.1, .2], [.1, .1], [.2, .3], [.4, .2]])
>>> layer([[0, 1], [0, 0], [1, 2], [3, 1]], count_weights=count_weights)
array([[0.1, 0.2, 0. , 0. ],
[0.2, 0. , 0. , 0. ],
[0. , 0.2, 0.3, 0. ],
[0. , 0.2, 0. , 0.4]]>
参数
0 <= value < num_tokens 范围内的整数,否则将抛出错误。"one_hot"、"multi_hot" 或 "count",分别配置该层如下: - "one_hot":将输入中的每个单独的元素编码为一个大小为 num_tokens 的数组,其中元素索引处的值为 1。如果最后一个维度的大小为 1,则在该维度上进行编码。如果最后一个维度的大小不为 1,则会为编码后的输出添加一个新维度。 - "multi_hot":将输入中的每个样本编码为一个大小为 num_tokens 的单一数组,其中对于样本中存在的每个词汇项,该位置的值为 1。将最后一个维度视为样本维度,如果输入形状是 (..., sample_length),则输出形状将是 (..., num_tokens)。 - "count":类似于 "multi_hot",但整数数组包含样本中 token 出现次数的计数。对于所有输出模式,目前仅支持高达秩 2 的输出。默认为 "multi_hot"。调用参数
inputs 形状相同的张量,表示在 count 模式下对每个样本值进行求和时的权重。在 "multi_hot" 或 "one_hot" 模式下不使用。