【问题标题】:Training with mixed-precision using the tensorflow estimator api使用 tensorflow estimator api 进行混合精度训练
【发布时间】:2019-08-12 10:28:03
【问题描述】:

有没有人有使用 tensorflow estimator api 进行混合精度训练的经验?

我尝试将输入转换为 tf.float16,并将网络结果转换回 tf.float32。为了缩放损失,我使用了 tf.contrib.mixed_precision.LossScaleOptimizer。

我得到的错误消息相对来说没有什么信息:“试图将'x'转换为张量并失败。错误:不支持任何值”,

【问题讨论】:

  • 错误消息似乎非常有用。 x 包含 None 值,在转换为张量时不支持这些值。 x 错误地将 Nones 获取为值(在这种情况下,您需要定位产生此错误的错误),或者这是预期的,但您需要在将数据转换为张量之前对其进行清理。
  • 我很清楚具体错误的含义,但不清楚它为什么会发生以及如何避免它。删除 tf.contrib.mixed_precision.LossScaleOptimizer 装饰器时。一切正常,除了在几次迭代后由于转换为 tf.float16 导致下溢。移除石膏后,训练照常进行。

标签: python tensorflow tensorflow-estimator


【解决方案1】:

我发现了问题:我使用 tf.get_variable 来存储学习率。这个变量没有梯度。普通优化器不关心,但 tf.contrib.mixed_precision.LossScaleOptimizer 崩溃。因此,请确保这些变量未添加到 tf.GraphKeys.TRAINABLE_VARIABLES。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2019-04-07
    • 2020-06-04
    • 2019-01-20
    相关资源
    最近更新 更多