CategoryEncoding 層

[來源]

CategoryEncoding 類別

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

一個預處理層,用於編碼整數特徵。

當事先已知詞彙總數時,此層提供將資料壓縮為類別編碼的選項。它接受整數值作為輸入,並輸出這些輸入的密集或稀疏表示。對於詞彙總數未知的整數輸入,請改用 keras.layers.IntegerLookup

注意: 此層可以安全地在 tf.data 管道內使用(與您使用的後端無關)。

範例

One-hot 編碼資料

>>> 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.]]>

Multi-hot 編碼資料

>>> 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" 模式中使用加權輸入

>>> 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",但整數陣列包含該索引處的詞彙在樣本中出現次數的計數。對於所有輸出模式,目前僅支援最高 rank 2 的輸出。預設為 "multi_hot"
  • sparse:是否返回稀疏張量;適用於支援稀疏張量的後端。

呼叫引數

  • inputs:整數輸入的 1D 或 2D 張量。
  • count_weights:與 inputs 形狀相同的張量,指示在 count 模式中求和時每個樣本值的權重。不適用於 "multi_hot""one_hot" 模式。