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


Python tf.keras.mixed_precision.experimental.LossScaleOptimizer用法及代碼示例


應用損失縮放的已棄用優化器。

繼承自:LossScaleOptimizerOptimizer

用法

tf.keras.mixed_precision.experimental.LossScaleOptimizer(
    optimizer, loss_scale
)

參數

  • optimizer 要包裝的優化器實例。
  • loss_scale 損失比例以縮放損失和梯度。這可以是使用固定損失比例的 int/float、使用動態損失比例的字符串 "dynamic" 或 LossScale 的實例。字符串 "dynamic" 等效於傳遞 DynamicLossScale() ,傳遞一個 int/float 等效於傳遞一個具有給定損失比例的 FixedLossScale。如果傳遞了 DynamicLossScale,則 DynamicLossScale.multiplier 必須為 2(默認值)。

拋出

  • ValueError 在任何無效論點的情況下。

屬性

  • dynamic 指示是否使用動態損失縮放的布爾值。
  • dynamic_counter 自上次增加或減少損失規模以來的步數。

    如果 LossScaleOptimizer.dynamic 為 False,則為無。

    計數器每一步遞增。一旦達到 LossScaleOptimizer.dynamic_growth_steps ,損失規模將加倍,計數器將重置為零。如果遇到非有限梯度,損失規模將減半,計數器將重置為零。

  • dynamic_growth_steps 增加損失規模所需的步驟數。

    如果 LossScaleOptimizer.dynamic 為 False,則為無。

    dynamic_growth_steps 個具有有限梯度的連續步驟,損失規模都會增加。

  • initial_scale 初始損失規模。

    如果 LossScaleOptimizer.dynamic 為 False,則此數字與 LossScaleOptimizer.loss_scale 相同,因為損失比例永遠不會改變。

  • inner_optimizer 此 LossScaleOptimizer 包裝的優化器。
  • learning_rate
  • loss_scale 當前損失標度為 float32 標量張量。
  • lr

警告:此類已棄用,並將在 TensorFlow 的未來版本中刪除。請改用非實驗類tf.keras.mixed_precision.LossScaleOptimizer

此類與非實驗性的keras.mixed_precision.LossScaleOptimizer 相同,隻是它的構造函數采用不同的參數。對於此類(實驗版本),構造函數采用loss_scale 參數。對於非實驗類,構造函數在多個參數中編碼損失縮放信息。請注意,與此類不同,非實驗類不接受已棄用的 tf.compat.v1.mixed_precision.LossScale

如果你當前使用這個類,你應該改用非實驗性的tf.keras.mixed_precision.LossScaleOptimizer。我們展示了幾個將實驗類的使用轉換為等效的非實驗類的示例。

# In all of the the examples below, `opt1` and `opt2` are identical
opt1 = tf.keras.mixed_precision.experimental.LossScaleOptimizer(
    tf.keras.optimizers.SGD(), loss_scale='dynamic')
opt2 = tf.keras.mixed_precision.LossScaleOptimizer(
    tf.keras.optimizers.SGD())
assert opt1.get_config() == opt2.get_config()
opt1 = tf.keras.mixed_precision.experimental.LossScaleOptimizer(
    tf.keras.optimizers.SGD(), loss_scale=123)
# dynamic=False indicates to use fixed loss scaling. initial_scale=123
# refers to the initial loss scale, which is the single fixed loss scale
# when dynamic=False.
opt2 = tf.keras.mixed_precision.LossScaleOptimizer(
    tf.keras.optimizers.SGD(), dynamic=False, initial_scale=123)
assert opt1.get_config() == opt2.get_config()
loss_scale = tf.compat.v1.mixed_precision.experimental.DynamicLossScale(
    initial_loss_scale=2048, increment_period=500)
opt1 = tf.keras.mixed_precision.experimental.LossScaleOptimizer(
    tf.keras.optimizers.SGD(), loss_scale=loss_scale)
opt2 = tf.keras.mixed_precision.LossScaleOptimizer(
    tf.keras.optimizers.SGD(), initial_scale=2048,
    dynamic_growth_steps=500)
assert opt1.get_config() == opt2.get_config()

如果有的話,請確保在 isinstance 檢查中也從此類切換到非實驗類。如果您不這樣做,您的模型可能會遇到 hard-to-debug 問題,因為實驗性 LossScaleOptimizer 是非實驗性 LossScaleOptimizer 的子類,但反之亦然。即使在使用非實驗性 LossScaleOptimizer 之前,將 isinstance 檢查切換到非實驗性 LossScaleOptimizer 也是安全的。

opt1 = tf.keras.mixed_precision.experimental.LossScaleOptimizer(
    tf.keras.optimizers.SGD(), loss_scale='dynamic')
# The experimental class subclasses the non-experimental class
isinstance(opt1, tf.keras.mixed_precision.LossScaleOptimizer)
True
opt2 = tf.keras.mixed_precision.LossScaleOptimizer(
    tf.keras.optimizers.SGD())
# The non-experimental class does NOT subclass the experimental class.
isinstance(opt2, tf.keras.mixed_precision.experimental.LossScaleOptimizer)
False

相關用法


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