【问题标题】:Why is gradient clipping not supported with a distribution strategy in Tensorflow?为什么 Tensorflow 中的分布策略不支持梯度裁剪?
【发布时间】:2020-06-28 06:52:59
【问题描述】:

使用分布策略似乎不支持渐变裁剪

https://github.com/tensorflow/tensorflow/blob/f9f6b4cec2a1bdc5781e4896d80cee1336a2fbab/tensorflow/python/keras/optimizer_v2/optimizer_v2.py#L383

("优化器中的梯度裁剪" “(通过设置clipnorm 或clipvalue)当前是” “使用分发策略时不受支持。”)

有什么理由吗?我很想定义一个自定义def _minimize(strategy, tape, optimizer, loss, trainable_variables):,直接剪裁渐变。

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    GitHub 用户 tomerk wrote:

    当您进行分发时,有两个可能的剪辑位置 启用策略:

    • 在梯度聚合之前(通常是错误的)
    • 梯度聚合后(通常是正确的,符合人们的期望)

    我们希望它在第二种情况下工作(渐变后的剪辑是 汇总)。问题是优化器是用剪辑编写的 在聚合之前发生在代码中。

    我们考虑过改变这一点,但它需要:

    • api 更改会破坏优化器 a​​pply_gradients/其他非最小化方法的现有用户
    • 更改优化器实现者需要实现的方法的签名,破坏现有的自定义优化器

    所以而不是:

    • 悄悄地在错误的地方进行剪辑
    • 增加流失率并打破现有用户或现有自定义优化器仅针对此单个功能

    我们决定暂时禁用此功能。我们将提供支持 为此进入一个更大的优化器重构,解决更大的集合 的问题。

    现在是implemented

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2019-05-06
      • 1970-01-01
      • 2019-07-11
      • 2018-12-10
      • 2019-07-27
      • 2017-03-19
      • 2016-05-02
      • 2018-06-28
      相关资源
      最近更新 更多