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.]
會生成桶 (-inf, 0.)
、[0., 1.)
、[1., 2.)
和 [2., +inf)
。如果設定此選項,則不應調用 adapt()
。bin_boundaries
,並且應調用 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"
輸出模式。 僅在 TensorFlow 後端支援。 如果為 True
,則返回 SparseTensor
而不是密集 Tensor
。 默認為 False
。範例
基於提供的桶離散化浮點值。
>>> 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]])
基於要計算的桶的數量離散化浮點值。
>>> 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]])