一个预处理层,对分类特征进行散列和分箱。
用法
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。