Discretization 类tf_keras.layers.Discretization(
bin_boundaries=None,
num_bins=None,
epsilon=0.01,
output_mode="int",
sparse=False,
**kwargs
)
一种预处理层,用于按范围对连续特征进行分箱。
此层会将输入数据的每个元素放置到几个连续范围中的一个,并输出一个表示每个元素所属范围的整数索引。
有关预处理层的概述和完整列表,请参阅预处理 指南。
输入形状
任何维度为 2 或更高的 tf.Tensor 或 tf.RaggedTensor。
输出形状
与输入形状相同。
参数
-inf 和 inf,因此 bin_boundaries=[0., 1., 2.] 将生成箱 (-inf, 0.)、[0., 1.)、[1., 2.) 和 [2., +inf)。如果设置了此选项,则不应调用 adapt()。adapt() 来学习箱边界。"int"、"one_hot"、"multi_hot" 或 "count",配置层如下:"int": 直接返回离散化的箱索引。"one_hot":将输入中的每个独立元素编码为一个与 num_bins 大小相同的数组,其中在输入的分桶索引处有一个 1。如果最后一个维度的大小为 1,则在该维度上进行编码。如果最后一个维度不为 1,则会附加一个新维度用于编码输出。"multi_hot":将输入中的每个样本编码为一个大小与 num_bins 相同的数组,其中对于样本中存在的每个分桶索引都包含一个 1。将最后一个维度视为样本维度,如果输入形状为 (..., sample_length),则输出形状为 (..., num_tokens)。"count":与 "multi_hot" 类似,但整数数组包含分箱索引在样本中出现的次数计数。默认为 "int"。"one_hot"、"multi_hot" 和 "count" 输出模式。如果为 True,则返回 SparseTensor 而不是密集 Tensor。默认为 False。示例
根据提供的分箱边界对浮点值进行分桶。
>>> input = np.array([[-1.5, 1.0, 3.4, .5], [0.0, 3.0, 1.3, 0.0]])
>>> layer = tf.keras.layers.Discretization(bin_boundaries=[0., 1., 2.])
>>> layer(input)
<tf.Tensor: shape=(2, 4), dtype=int64, numpy=
array([[0, 2, 3, 1],
[1, 3, 2, 1]])>
根据要计算的箱数对浮点值进行分桶。
>>> input = np.array([[-1.5, 1.0, 3.4, .5], [0.0, 3.0, 1.3, 0.0]])
>>> layer = tf.keras.layers.Discretization(num_bins=4, epsilon=0.01)
>>> layer.adapt(input)
>>> layer(input)
<tf.Tensor: shape=(2, 4), dtype=int64, numpy=
array([[0, 2, 3, 2],
[1, 3, 3, 1]])>