當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。