一個預處理層,對分類特征進行散列和分箱。
用法
tf.keras.layers.Hashing(
num_bins, mask_value=None, salt=None, output_mode='int', sparse=False,
**kwargs
)
參數
-
num_bins
哈希箱的數量。請注意,這包括mask_value
bin,因此如果設置了mask_value
,則有效的 bin 數為(num_bins - 1)
。 -
mask_value
表示掩碼輸入的值,映射到索引 0。默認為無,這意味著不會添加掩碼項,散列將從索引 0 開始。 -
salt
單個無符號整數或無。如果通過,則使用的散列函數將是 SipHash64,這些值用作附加輸入(在密碼學中稱為 "salt")。這些應該是非零的。默認為None
(在這種情況下,使用 FarmHash64 哈希函數)。它還支持 2 個無符號整數的元組/列表,有關詳細信息,請參閱參考論文。 -
output_mode
層輸出的規範。默認為"int"
.值可以是"int"
,"one_hot"
,"multi_hot"
, 或者"count"
配置層如下:"int"
:直接返回整數 bin 索引。"one_hot"
:將輸入中的每個單獨元素編碼為與num_bins
大小相同的數組,在輸入的 bin 索引處包含 1。如果最後一個維度是大小 1,將在該維度上進行編碼。如果最後一個維度不是大小 1,將為編碼輸出附加一個新維度。"multi_hot"
:將輸入中的每個樣本編碼為與num_bins
大小相同的單個數組,其中包含樣本中存在的每個 bin 索引索引的 1。將最後一個維度視為樣本維度,如果輸入形狀為(..., sample_length)
,則輸出形狀將為(..., num_tokens)
。"count"
:與"multi_hot"
一樣,但 int 數組包含 bin 索引在樣本中出現的次數的計數。
-
sparse
布爾值。僅適用於"one_hot"
,"multi_hot"
和"count"
輸出模式。如果為 True,則返回SparseTensor
而不是密集的Tensor
。默認為假。 -
**kwargs
構造層的關鍵字參數。
該層將分類輸入轉換為散列輸出。它按元素將整數或字符串轉換為固定範圍內的整數。穩定的哈希函數使用tensorflow::ops::Fingerprint
在所有平台上一致地產生相同的輸出。
該層默認使用 FarmHash64,它通過徹底混合輸入位,在不同平台上提供一致的散列輸出,並且在調用之間保持穩定,無論設備和上下文如何。
如果你想混淆散列輸出,你也可以在構造函數中傳遞一個隨機的 salt
參數。在這種情況下,該層將使用 SipHash64 散列函數,並將 salt
值用作散列函數的附加輸入。
有關預處理層的概述和完整列表,請參閱預處理指南。
示例(FarmHash64)
layer = tf.keras.layers.Hashing(num_bins=3)
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
<tf.Tensor:shape=(5, 1), dtype=int64, numpy=
array([[1],
[0],
[1],
[1],
[2]])>
具有掩碼值的示例 (FarmHash64)
layer = tf.keras.layers.Hashing(num_bins=3, mask_value='')
inp = [['A'], ['B'], [''], ['C'], ['D']]
layer(inp)
<tf.Tensor:shape=(5, 1), dtype=int64, numpy=
array([[1],
[1],
[0],
[2],
[2]])>
示例(SipHash64)
layer = tf.keras.layers.Hashing(num_bins=3, salt=[133, 137])
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
<tf.Tensor:shape=(5, 1), dtype=int64, numpy=
array([[1],
[2],
[1],
[0],
[2]])>
示例(帶有單個整數的 Siphash64,與 salt=[133, 133]
相同)
layer = tf.keras.layers.Hashing(num_bins=3, salt=133)
inp = [['A'], ['B'], ['C'], ['D'], ['E']]
layer(inp)
<tf.Tensor:shape=(5, 1), dtype=int64, numpy=
array([[0],
[0],
[2],
[1],
[0]])>
輸入形狀:
單個或字符串列表,int32 或 int64 Tensor
, SparseTensor
或 RaggedTensor
,形狀為 (batch_size, ...,)
輸出形狀:
形狀為 (batch_size, ...)
的 int64 Tensor
, SparseTensor
或 RaggedTensor
。如果任何輸入為 RaggedTensor
則輸出為 RaggedTensor
,否則如果任何輸入為 SparseTensor
則輸出為 SparseTensor
,否則輸出為 Tensor
。
參考:
相關用法
- Python tf.keras.layers.InputLayer用法及代碼示例
- Python tf.keras.layers.serialize用法及代碼示例
- Python tf.keras.layers.Dropout用法及代碼示例
- Python tf.keras.layers.maximum用法及代碼示例
- Python tf.keras.layers.LayerNormalization用法及代碼示例
- Python tf.keras.layers.Conv2D用法及代碼示例
- Python tf.keras.layers.RepeatVector用法及代碼示例
- Python tf.keras.layers.Multiply用法及代碼示例
- Python tf.keras.layers.Activation用法及代碼示例
- Python tf.keras.layers.Conv1D用法及代碼示例
- Python tf.keras.layers.experimental.preprocessing.PreprocessingLayer.adapt用法及代碼示例
- Python tf.keras.layers.CategoryEncoding用法及代碼示例
- Python tf.keras.layers.subtract用法及代碼示例
- Python tf.keras.layers.experimental.preprocessing.HashedCrossing用法及代碼示例
- Python tf.keras.layers.Subtract用法及代碼示例
- Python tf.keras.layers.ZeroPadding3D用法及代碼示例
- Python tf.keras.layers.MaxPool3D用法及代碼示例
- Python tf.keras.layers.Dot用法及代碼示例
- Python tf.keras.layers.UpSampling1D用法及代碼示例
- Python tf.keras.layers.MultiHeadAttention用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.layers.Hashing。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。