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


Python tf.clip_by_global_norm用法及代码示例


通过它们的范数之和的比率来裁剪多个张量的值。

用法

tf.clip_by_global_norm(
    t_list, clip_norm, use_norm=None, name=None
)

参数

  • t_list 混合的元组或列表 Tensors , IndexedSlices ,或无。
  • clip_norm 0-D(标量)Tensor > 0。削波率。
  • use_norm float 类型的 0-D(标量)Tensor(可选)。使用的全局规范。如果未提供,global_norm() 用于计算标准。
  • name 操作的名称(可选)。

返回

  • list_clipped list_t 类型相同的 Tensors 列表。
  • global_norm 一个 0-D(标量)Tensor,代表全局规范。

抛出

  • TypeError 如果 t_list 不是序列。

给定一个元组或张量列表 t_list 和一个裁剪比率 clip_norm ,此操作返回一个裁剪张量列表 list_clippedt_list 中所有张量的全局范数 (global_norm )。或者,如果您已经计算了 t_list 的全局规范,则可以使用 use_norm 指定全局规范。

为了执行剪辑,值 t_list[i] 设置为:

t_list[i] * clip_norm / max(global_norm, clip_norm)

其中:

global_norm = sqrt(sum([l2norm(t)**2 for t in t_list]))

如果 clip_norm > global_normt_list 中的条目保持原样,否则它们都将按全局比例缩小。

如果 global_norm == infinityt_list 中的条目都设置为 NaN 以表示发生了错误。

t_list 的任何类型为None 的条目都将被忽略。

这是执行渐变剪裁的正确方法(Pascanu et al., 2012)。

但是,它比clip_by_norm() 慢,因为在执行剪切操作之前必须准备好所有参数。

参考:

关于训练循环神经网络的难度:Pascanu et al., 2012 (pdf)

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.clip_by_global_norm。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。