指定されたハンドルに値の勾配を格納するためのTensorArrayを作成します。
指定されたTensorArrayグラデーションがすでに存在する場合は、そのグラデーションへの参照を返します。
動的サイズフラグを無効にすることにより、元のTensorArrayのサイズをロックします。
**入力flow_inに関する注意:**
ハンドルflow_inは、特定の他の操作が発生した後にのみ、グラデーションルックアップの実行を強制します。たとえば、フォワードTensorArrayのサイズが動的に設定されている場合、このTensorArrayへの書き込みによってオブジェクトのサイズが変更される場合があります。勾配TensorArrayは、この操作の実行時に前方TensorArrayのサイズに基づいて静的にサイズ設定されます。さらに、フォワードTensorArrayのサイズは、この呼び出しによって凍結されます。その結果、フローを使用して、グラデーションTensorArrayを生成するための呼び出しが、すべての書き込みが実行された後にのみ発生するようにします。
動的なサイズのTensorArrayの場合、勾配計算は、すべての書き込みが実行された後にのみ発生するように、フローを介してチェーンされた読み取り操作でのみ実行する必要があります。このようにして、この操作が呼び出されたときに、フォワードTensorArrayの最終的なサイズがわかります。
**ソース属性に関する注意:**
TensorArrayグラデーション呼び出しは、アキュムレータTensorArrayオブジェクトを使用します。複数の勾配が計算され、同じセッションで実行される場合、複数の勾配ノードが誤って同じアキュムレータTensorArrayを流れる可能性があります。この二重カウントは、TensorArrayグラジエントフローを一般的に中断します。
解決策は、この特定のTensorArrayグラデーションが呼び出されているグラデーション呼び出しを識別することです。これは、入力グラデーションTensorの名前から一意の文字列(「gradients」、「gradients_1」など)を識別することによって実行されます。この文字列は、ここでTensorArrayグラデーションオブジェクト(属性 `source`)を作成するときに接尾辞として使用されます。
属性 `source`は、作成/ルックアップを実行するときにフォワードTensorArrayの名前に接尾辞として追加されるため、個別の勾配計算ごとに独自のTensorArrayアキュムレータが取得されます。
パブリックメソッド
静的TensorArrayGrad | |
出力<フロート> | flowOut () |
出力<?> | gradHandle () |
継承されたメソッド
パブリックメソッド
public static TensorArrayGrad create (スコープスコープ、オペランド<?>ハンドル、オペランド<フロート> flowIn、文字列ソース)
新しいTensorArrayGrad操作をラップするクラスを作成するファクトリメソッド。
パラメーター
範囲 | 現在のスコープ |
---|---|
扱う | フォワードTensorArrayへのハンドル。 |
流れ込みます | 操作の適切な連鎖を強制するfloatスカラー。 |
ソース | 返すグラデーションTensorArrayを決定するために使用されるグラデーションソース文字列。 |
戻り値
- TensorArrayGradの新しいインスタンス