當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.keras.layers.Discretization用法及代碼示例


一個預處理層,按範圍對連續特征進行存儲。

繼承自:PreprocessingLayerLayerModule

用法

tf.keras.layers.Discretization(
    bin_boundaries=None, num_bins=None, epsilon=0.01, output_mode='int',
    sparse=False, **kwargs
)

屬性

  • bin_boundaries bin 邊界列表。最左邊和最右邊的 bin 將始終擴展到 -infinf ,因此 bin_boundaries=[0., 1., 2.] 生成 bin (-inf, 0.) , [0., 1.) , [1., 2.)[2., +inf) 。如果設置了此選項,則不應調用adapt()
  • num_bins 要計算的二進製數的整數。如果設置了此選項,則應調用 adapt() 來了解 bin 邊界。
  • epsilon 容錯,通常是接近零的一小部分(例如 0.01)。較高的 epsilon 值會增加分位數近似值,因此會導致更多不相等的桶,但可以提高性能和資源消耗。
  • 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 。默認為假。
  • is_adapted 圖層是否已經適合數據。

該層會將其輸入數據的每個元素放入幾個連續範圍之一,並輸出一個整數索引,指示每個元素放置在哪個範圍內。

有關預處理層的概述和完整列表,請參閱預處理指南。

輸入形狀:

任何維度 2 或更高的 tf.Tensortf.RaggedTensor

輸出形狀:

與輸入形狀相同。

例子:

根據提供的存儲桶對浮點值進行分桶。

>>> 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]], dtype=int64)>

根據要計算的桶數對浮點值進行桶化。

>>> 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]], dtype=int64)>

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.layers.Discretization。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。