tensorflow:: ops:: 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
)