このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.clip_by_global_norm

TensorFlow 1つのバージョン GitHubの上のソースを表示

その規範の和の比によって、複数のテンソルのクリップ値。

タプルまたはリストテンソルの所与t_list 、及びクリッピング比clip_norm 、この操作は、クリップテンソルのリストを返しlist_clipped 、グローバルノルム( global_norm内のすべてのテンソルの) t_list 。あなたは既にのためのグローバルな規範を計算した場合、必要に応じて、 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_norm 、その後のエントリt_listそのまま残る、そうでない場合は、グローバルな比率ですべて縮小しています。

場合global_norm == infinity 、その後のエントリt_listにすべてのセットですNaNエラーが発生したことを知らせるために。

エントリのいずれかt_list型であるNone無視されます。

これは、勾配クリッピング(Pascanuら、2012)を実行するための正しい方法です。

しかし、それはより遅いclip_by_norm()クリッピング操作を実行する前に、すべてのパラメータは準備ができていなければならないからです。

t_list 混合のタプルやリストTensorsIndexedSlices 、またはNone。
clip_norm 0-D(スカラー) Tensor > 0クリッピング比。
use_norm 0-D(スカラー) Tensor型のfloat (オプション)。グローバルな規範に使用します。提供されていない場合、 global_norm()ノルムを計算するために使用されます。
name 操作の名前(オプション)。

list_clipped リストTensorsと同じ型のlist_t
global_norm 0-D(スカラー) Tensorグローバルノルムを表します。

TypeError 場合t_listシーケンスではありません。

参考文献:

リカレントニューラルネットワークを訓練することの難しさで: 。Pascanuら、2012PDF