パブリック最終クラスStopGradient
勾配の計算を停止します。
グラフ内で実行されると、この演算は入力テンソルをそのまま出力します。
勾配を計算する演算を構築する場合、この演算により入力の寄与が考慮されなくなります。通常、勾配ジェネレーターはグラフに演算を追加し、その計算に寄与した入力を再帰的に見つけ出すことで、指定された「損失」の導関数を計算します。この演算をグラフに挿入すると、入力は勾配ジェネレーターからマスクされます。それらは勾配の計算には考慮されません。
これは、TensorFlow で値を計算したいが、その値が定数であるかのように振る舞う必要がある場合に便利です。たとえば、ベクトル x のソフトマックス関数は次のように記述できます。
def softmax(x):
numerator = tf.exp(x)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
def stable_softmax(x):
z = x - tf.reduce_max(x)
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
tf.reduce_max(x)
(最大値が一意でない場合、勾配が間違った入力に流れる可能性があります) 計算を通じて逆伝播し、それを定数として扱うことは望ましくありません。したがって、これを次のように書き出す必要があります。def stable_softmax(x):
z = x - tf.stop_gradient(tf.reduce_max(x))
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
- M ステップがE ステップの出力を介した逆伝播を必要としないEMアルゴリズム。
- ボルツマン マシンの対比発散トレーニング。エネルギー関数を微分する場合、モデルからサンプルを生成したグラフを通じてトレーニングが逆伝播してはなりません。
- 敵対的トレーニング。敵対的サンプルの生成プロセスを通じてバックプロップが発生しないようにします。
パブリックメソッド
出力<T> | asOutput () テンソルのシンボリック ハンドルを返します。 |
静的 <T> StopGradient <T> | |
出力<T> | 出力() |
継承されたメソッド
パブリックメソッド
public Output <T> asOutput ()
テンソルのシンボリック ハンドルを返します。
TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。
public static StopGradient <T> create (スコープスコープ、オペランド<T> 入力)
新しい StopGradient オペレーションをラップするクラスを作成するためのファクトリ メソッド。
パラメータ
範囲 | 現在のスコープ |
---|
返品
- StopGradient の新しいインスタンス