类别编码层

[source]

CategoryEncoding class

keras.layers.CategoryEncoding(
    num_tokens=None, output_mode="multi_hot", sparse=False, **kwargs
)

一个用于编码整数特征的预处理层.

该层提供了在总标记数预先已知时将数据压缩为分类编码的选项.它接受整数值作为输入,并输出这些输入的密集或稀疏表示.对于总标记数未知的整数输入,请使用 keras.layers.IntegerLookup 代替.

注意: 该层在 tf.data 管道中使用是安全的(无论您使用哪个后端).

示例:

独热编码数据

```python
>>> 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.]]>
**多热编码数据**

```python
```python
>>> 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"` 模式下使用加权输入**

```python
```python
>>> 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]]>

```

参数: num_tokens: 该层应支持的总标记数.该层的所有输入必须是 0 <= value < num_tokens 范围内的整数,否则将抛出错误. output_mode: 指定层的输出规范. 值可以是 "one_hot""multi_hot""count",配置层如下: - "one_hot": 将输入中的每个元素编码为一个大小为 num_tokens 的数组,在元素索引处包含一个 1.如果最后一个维度的大小为 1,将在该维度上进行编码.如果最后一个维度的大小不是 1,将追加一个新的维度用于编码输出. - "multi_hot": 将输入中的每个样本编码为一个大小为 num_tokens 的单个数组,包含样本中存在的每个词汇项的 1.将最后一个维度视为样本维度,如果输入形状为 (..., sample_length),输出形状将为 (..., num_tokens). - "count": 类似于 "multi_hot",但整数数组包含样本中该索引处标记出现的次数. 对于所有输出模式,目前仅支持秩为 2 的输出. 默认为 "multi_hot". sparse: 是否返回稀疏张量;适用于支持稀疏张量的后端.

调用参数: inputs: 一个 1D 或 2D 的整数输入张量. count_weights: 一个与 inputs 形状相同的张量,指示在 count 模式下每个样本值的权重.在 "multi_hot""one_hot" 模式下不使用.