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


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


跨副本同步標準化和縮放輸入或激活。

繼承自:LayerModule

用法

tf.keras.layers.experimental.SyncBatchNormalization(
    axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True,
    beta_initializer='zeros', gamma_initializer='ones',
    moving_mean_initializer='zeros',
    moving_variance_initializer='ones', beta_regularizer=None,
    gamma_regularizer=None, beta_constraint=None, gamma_constraint=None, **kwargs
)

參數

  • axis 整數,應該歸一化的軸(通常是特征軸)。例如,在帶有 data_format="channels_first"Conv2D 層之後,在 BatchNormalization 中設置 axis=1
  • momentum 移動平均線的動量。
  • epsilon 小浮點數添加到方差中以避免除以零。
  • center 如果為 True,則將 beta 的偏移量添加到歸一化張量。如果為 False,則忽略 beta
  • scale 如果為真,乘以 gamma 。如果為 False,則不使用 gamma。當下一層是線性的(例如 nn.relu )時,可以禁用此函數,因為縮放將由下一層完成。
  • beta_initializer Beta 權重的初始化程序。
  • gamma_initializer 伽馬權重的初始化器。
  • moving_mean_initializer 移動均值的初始化器。
  • moving_variance_initializer 移動方差的初始化程序。
  • beta_regularizer beta 權重的可選正則化器。
  • gamma_regularizer 伽馬權重的可選正則化器。
  • beta_constraint Beta 權重的可選約束。
  • gamma_constraint 伽馬權重的可選約束。

通過在訓練模型的所有設備上同步全局批次統計信息,將批次標準化應用於每個批次的前一層的激活。有關批量標準化的具體細節,請參閱tf.keras.layers.BatchNormalization 層文檔。

如果在使用 tf.distribute 策略跨設備/工作人員訓練模型時使用此層,則將有一個 allreduce 調用來聚合每個訓練步驟中所有副本的批處理統計信息。如果沒有 tf.distribute 策略,該層的行為類似於常規的 tf.keras.layers.BatchNormalization 層。

示例用法:

strategy = tf.distribute.MirroredStrategy()

with strategy.scope():
  model = tf.keras.Sequential()
  model.add(tf.keras.layers.Dense(16))
  model.add(tf.keras.layers.experimental.SyncBatchNormalization())

調用參數:

  • inputs:輸入張量(任意等級)。
  • training:Python 布爾值,指示層應該在訓練模式還是推理模式下運行。
    • training=True:該層將使用當前批次輸入的均值和方差對其輸入進行歸一化。
    • training=False:該層將使用在訓練期間學習的移動統計數據的均值和方差對其輸入進行歸一化。

輸入形狀:

隨意的。將此層用作模型中的第一層時,請使用關鍵字參數input_shape(整數元組,不包括樣本軸)。

輸出形狀:

與輸入的形狀相同。

相關用法


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