看起来使用分布策略不支持梯度裁剪
(“使用分布策略时,当前不支持优化器中的梯度裁剪”(通过设置clipnorm或clipvalue)。”)
这有什么原因吗?我很想定义一个def _minimize(strategy, tape, optimizer, loss, trainable_variables):直接剪切渐变的自定义。
GitHub 用户 tomerk写道:
当您启用分发策略时,有两个可能的地方可以进行剪辑:
- 在梯度聚合之前(通常是错误的)
- 梯度聚合后(通常是正确的并且符合人们的期望)
我们希望它在第二种情况下工作(梯度聚合后进行裁剪)。问题是优化器是在聚合之前在代码中发生剪裁而编写的。
我们考虑改变这一点,但它需要:
- api 更改会破坏优化器 apply_gradients/其他非最小化方法的现有用户
- 更改优化器实现者需要实现的方法的签名,破坏现有的自定义优化器
所以而不是:
- 悄悄地在错误的地方进行剪辑
- 仅针对此单独功能增加流失并破坏现有用户或现有自定义优化器
相反,我们决定暂时禁用此功能。我们将对这一点的支持纳入更大的优化器重构中,以解决更多的问题。
目前,这一举措已得到落实。
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |