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


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

標準化連續特征的預處理層。

繼承自:PreprocessingLayerLayerModule

用法

tf.keras.layers.Normalization(
    axis=-1, mean=None, variance=None, **kwargs
)

參數

  • axis 整數、整數元組或無。對於形狀中的每個索引,一個或多個軸應該具有單獨的均值和方差。例如,如果形狀是 (None, 5)axis=1 ,則圖層將跟蹤最後一個軸的 5 個單獨的均值和方差值。如果 axis 設置為 None ,該層將通過標量均值和方差對輸入中的所有元素進行歸一化。默認為 -1,其中輸入的最後一個軸被假定為特征維度並按索引進行歸一化。請注意,在唯一軸是批處理軸的批處理標量輸入的特定情況下,默認情況下將分別對批處理中的每個索引進行規範化。在這種情況下,請考慮傳遞 axis=None
  • mean 標準化期間使用的平均值。傳遞的值將被廣播到上麵保留軸的形狀;如果無法廣播該值,則調用該層的build() 方法時將引發錯誤。
  • variance 標準化期間要使用的方差值。傳遞的值將被廣播到上麵保留軸的形狀;如果無法廣播該值,則調用該層的build() 方法時將引發錯誤。

屬性

  • is_adapted 圖層是否已經適合數據。

該層會將輸入轉換並縮放到以 0 為中心且標準差為 1 的分布中。它通過預先計算數據的均值和方差並在運行時調用 (input - mean) / sqrt(var) 來實現這一點。

該層的均值和方差值必須在構造時提供或通過 adapt() 學習。 adapt() 將計算數據的均值和方差,並將它們存儲為層的權重。 adapt() 應該在 fit() , evaluate()predict() 之前調用。

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

例子:

通過分析 adapt() 中的數據集來計算全局均值和方差。

adapt_data = np.array([1., 2., 3., 4., 5.], dtype='float32')
input_data = np.array([1., 2., 3.], dtype='float32')
layer = tf.keras.layers.Normalization(axis=None)
layer.adapt(adapt_data)
layer(input_data)
<tf.Tensor:shape=(3,), dtype=float32, numpy=
array([-1.4142135, -0.70710677, 0.], dtype=float32)>

計算最後一個軸上每個指標的均值和方差。

adapt_data = np.array([[0., 7., 4.],
                       [2., 9., 6.],
                       [0., 7., 4.],
                       [2., 9., 6.]], dtype='float32')
input_data = np.array([[0., 7., 4.]], dtype='float32')
layer = tf.keras.layers.Normalization(axis=-1)
layer.adapt(adapt_data)
layer(input_data)
<tf.Tensor:shape=(1, 3), dtype=float32, numpy=
array([0., 0., 0.], dtype=float32)>

直接傳遞均值和方差。

input_data = np.array([[1.], [2.], [3.]], dtype='float32')
layer = tf.keras.layers.Normalization(mean=3., variance=2.)
layer(input_data)
<tf.Tensor:shape=(3, 1), dtype=float32, numpy=
array([[-1.4142135 ],
       [-0.70710677],
       [ 0.        ]], dtype=float32)>

相關用法


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