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]])>