当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。