HashedCrossing
类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
流水线中安全使用(无论您使用哪个后端)。
参数
"int"
或 "one_hot"
,配置如下:"int"
: 直接返回整数桶索引。"one_hot"
: 将输入中的每个独立元素编码为一个与 num_bins
大小相同的数组,输入元素对应的桶索引位置为 1。默认为 "int"
。"one_hot"
模式,并且仅在使用 TensorFlow 后端时有效。如果为 True
,则返回 SparseTensor
而不是密集 Tensor
。默认为 False
。示例
交叉两个标量特征。
>>> 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)