哈希交叉层

[source]

HashedCrossing class

keras.layers.HashedCrossing(
    num_bins, output_mode="int", sparse=False, name=None, dtype=None, **kwargs
)

一个使用"哈希技巧”进行特征交叉的预处理层.

该层使用"哈希技巧”执行分类特征的交叉.从概念上讲,这种转换可以被认为是:hash(concatenate(features)) % num_bins.

该层目前仅执行标量输入和标量输入批次的交叉.有效的输入形状是 (batch_size, 1)(batch_size,)().

注意: 该层包装了 tf.keras.layers.HashedCrossing.它不能用作具有除 TensorFlow 之外的任何后端的模型的编译计算图的一部分.然而,它可以在任何后端运行时使用.它也可以始终作为输入预处理管道的一部分与任何后端一起使用(在模型本身之外),这是我们推荐使用此层的方式.

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

参数: num_bins: 哈希桶的数量. output_mode: 层的输出规范.值可以是 "int""one_hot",配置层如下: - "int":直接返回整数桶索引. - "one_hot":将输入中的每个单独元素编码为一个与 num_bins 大小相同的数组,在输入的桶索引处包含一个 1.默认为 "int". sparse: 布尔值.仅适用于 "one_hot" 模式,并且仅在 TensorFlow 后端使用时有效.如果为 True,则返回 SparseTensor 而不是密集的 Tensor.默认为 False. **kwargs: 用于构造层的键值参数.

示例:

交叉两个标量特征.

layer = keras.layers.HashedCrossing(
    num_bins=5)
feat1 = np.array(['A', 'B', 'A', 'B', 'A'])
feat2 = np.array([101, 101, 101, 102, 102])
layer((feat1, feat2))
array([1, 4, 1, 1, 3])

交叉并独热编码两个标量特征.

layer = keras.layers.HashedCrossing(
    num_bins=5, output_mode='one_hot')
feat1 = np.array(['A', 'B', 'A', 'B', 'A'])
feat2 = np.array([101, 101, 101, 102, 102])
layer((feat1, feat2))
array([[0., 1., 0., 0., 0.],
       [0., 0., 0., 0., 1.],
       [0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0.]], dtype=float32)