テンソルフロー::作戦:: TensorArrayGrad
#include <data_flow_ops.h>
指定されたハンドルに値の勾配を格納するための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アキュムレータを取得します。
引数:
- スコープ:スコープオブジェクト
- handle: 前方TensorArrayへのハンドル。
- flow_in: 操作の適切な連鎖を強制する浮動小数点スカラー。
- source: どの勾配TensorArrayを返すかを決定するために使用される勾配ソース文字列。
戻り値:
コンストラクターとデストラクター | |
---|---|
TensorArrayGrad (const :: tensorflow::Scope & scope, :: tensorflow::Input handle, :: tensorflow::Input flow_in, StringPiece source) |
パブリック属性 | |
---|---|
flow_out | |
grad_handle | |
operation |
パブリック属性
流出
::tensorflow::Output flow_out
グラッドハンドル
::tensorflow::Output grad_handle
手術
Operation operation
公共機能
TensorArrayGrad
TensorArrayGrad( const ::tensorflow::Scope & scope, ::tensorflow::Input handle, ::tensorflow::Input flow_in, StringPiece source )