Discretization
类keras.layers.Discretization(
bin_boundaries=None,
num_bins=None,
epsilon=0.01,
output_mode="int",
sparse=False,
dtype=None,
name=None,
)
一个预处理层,通过范围将连续特征分桶。
该层会将其输入数据的每个元素放入几个连续范围之一,并输出一个整数索引,指示每个元素放入的范围。
注意: 该层可以在 tf.data
管道内安全使用(与您使用的后端无关)。
输入形状
任何维度为 2 或更高的数组。
输出形状
与输入形状相同。
参数
-inf
和 inf
,因此 bin_boundaries=[0., 1., 2.]
生成 bin (-inf, 0.)
、[0., 1.)
、[1., 2.)
和 [2., +inf)
。如果设置此选项,则不应调用 adapt()
。bin_boundaries
,并且应调用 adapt()
来学习 bin 边界。"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 索引在样本中出现的次数的计数。默认为 "int"
。"one_hot"
、"multi_hot"
和 "count"
输出模式。仅在 TensorFlow 后端受支持。如果为 True
,则返回 SparseTensor
而不是密集 Tensor
。默认为 False
。示例
基于提供的 bucket 离散化浮点值。
>>> input = np.array([[-1.5, 1.0, 3.4, .5], [0.0, 3.0, 1.3, 0.0]])
>>> layer = Discretization(bin_boundaries=[0., 1., 2.])
>>> layer(input)
array([[0, 2, 3, 1],
[1, 3, 2, 1]])
基于要计算的 bucket 数量离散化浮点值。
>>> input = np.array([[-1.5, 1.0, 3.4, .5], [0.0, 3.0, 1.3, 0.0]])
>>> layer = Discretization(num_bins=4, epsilon=0.01)
>>> layer.adapt(input)
>>> layer(input)
array([[0, 2, 3, 2],
[1, 3, 3, 1]])