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 以外的任何後端中用作模型的編譯計算圖的一部分。但是,在 eager 模式下運行時,它可以與任何後端一起使用。它也始終可以用作任何後端的輸入預處理管道的一部分(在模型本身之外),這是我們建議使用此層的方式。
注意: 此層可以安全地在 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])
交叉並進行 one-hot 編碼兩個純量特徵。
>>> 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)