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]]>
引數
0 <= value < num_tokens
範圍內的整數,否則會拋出錯誤。"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"
。呼叫引數
inputs
形狀相同的張量,指示在 count
模式中求和時每個樣本值的權重。不適用於 "multi_hot"
或 "one_hot"
模式。