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

tf.clip_by_norm

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

最大L2ノルムにクリップテンソル値。

ノートPCで使用されます

ガイドで使用

テンソル所与t 、及び最大クリップ値clip_norm 、この動作は、正規化tそのL2ノルム未満又は等しいとなるようclip_norm 、で与えられた寸法に沿ってaxes 。具体的には、のL2ノルム場合、すべての寸法は、計算のために使用されるデフォルトの場合にt既に未満であるか、または等しいclip_norm 、次いでt変更されません。 L2ノルムがより大きい場合clip_norm 、この操作は、同じタイプおよび形状のテンソル返しtに設定された値とします。

t * clip_norm / l2norm(t)

この場合、出力テンソルのL2ノルムであるclip_norm

別の例として、 t行列となるaxes == [1]出力の各行は、以下L2ノルムを持っているかに等しくなるclip_norm 。もしaxes == [0]の代わりに、出力の各列はクリップされます。

コード例:

some_nums = tf.constant([[1, 2, 3, 4, 5]], dtype=tf.float32)
tf.clip_by_norm(some_nums, 2.0).numpy()
array([[0.26967996, 0.5393599 , 0.80903983, 1.0787199 , 1.3483998 ]],
      dtype=float32)

この操作は、通常、オプティマイザでそれらを適用する前に、クリップ勾配に使用されています。ほとんどの勾配データは、モデルの異なる部分について異なる形状テンソルのコレクションです。したがって、これは一般的な使用方法は次のとおりです。

 # Get your gradients after training
loss_value, grads = grad(model, features, labels)

# Apply some clipping
grads = [tf.clip_by_norm(g, norm)
             for g in grads]

# Continue on with training
optimizer.apply_gradients(grads)
 

t A TensorまたはIndexedSlices 。これは、浮動小数点型である必要があります。
clip_norm 0-D(スカラー) Tensor > 0 A最大クリッピング値も浮動小数点
axes 1-D(ベクトル) Tensor型のL2ノルムを計算するために使用するディメンションを含むINT32。場合None (デフォルト)、すべての次元を使用しています。
name 操作の名前(オプション)。

AはクリッピングTensorまたはIndexedSlices

ValueError clip_normテンソルは、0-Dスカラーテンソルではない場合。
TypeError 入力のDTYPEは浮動小数点または複合型ではない場合。