HashedCrossing 層

[原始碼]

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 管道內使用(與您使用的後端無關)。

參數

  • 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])

交叉並進行 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)