一个预处理层,对分类特征进行散列和分箱。
用法
tf.keras.layers.Hashing(
num_bins, mask_value=None, salt=None, output_mode='int', sparse=False,
**kwargs
)参数
-
num_bins哈希箱的数量。请注意,这包括mask_valuebin,因此如果设置了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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
