tensorflow ::範囲
#include <scope.h>
Scope
オブジェクトは、共通名プレフィックスなどの同じプロパティを持つ関連するTensorFlow操作のセットを表します。
概要
Scopeオブジェクトは、TensorFlowOpプロパティのコンテナです。 Opコンストラクターは必須の最初の引数としてScopeオブジェクトを取得し、構築されたopはオブジェクトのプロパティを取得します。
簡単な例:
using namespace ops; Scope root = Scope::NewRootScope(); auto c1 = Const(root, { {1, 1} }); auto m = MatMul(root, c1, { {41}, {1} }); GraphDef gdef; Status s = root.ToGraphDef(&gdef); if (!s.ok()) { ... }
スコープ階層:
Scopeクラスは、新しいスコープを作成するさまざまなWith<>関数を提供します。新しいスコープでは通常、1つのプロパティが変更され、他のプロパティは親スコープから継承されます。 NewSubScope(name)メソッドは、スコープ内で作成されたopsの名前のプレフィックスにname
を追加し、 WithOpName()はサフィックスを変更します。それ以外の場合は、デフォルトでopのタイプになります。
名前の例:
Scope root = Scope::NewRootScope(); Scope linear = root.NewSubScope("linear"); // W will be named "linear/W" auto W = Variable(linear.WithOpName("W"), {2, 2}, DT_FLOAT); // b will be named "linear/b_3" int idx = 3; auto b = Variable(linear.WithOpName("b_", idx), {2}, DT_FLOAT); auto x = Const(linear, {...}); // name: "linear/Const" auto m = MatMul(linear, x, W); // name: "linear/MatMul" auto r = BiasAdd(linear, m, b); // name: "linear/BiasAdd"
スコープの有効期間:
Scope :: NewRootScopeを呼び出すと、新しいスコープが作成されます。これにより、このスコープから直接または推移的に継承するすべての子スコープによって共有されるいくつかのリソースが作成されます。たとえば、新しいスコープは新しいGraphオブジェクトを作成し、新しいスコープまたはその子がOpコンストラクターによって使用されるときに操作が追加されます。新しいスコープには、任意の子スコープで呼び出されるOp-constructor関数によるエラーを示すために使用されるStatusオブジェクトもあります。 Opコンストラクター関数は、opの構築に進む前に、ok()メソッドを呼び出してスコープのステータスを確認する必要があります。
スレッドセーフ:
Scope
オブジェクトはスレッドセーフではありません。スレッドは、同じScope
オブジェクトでop-constructor関数を同時に呼び出すことはできません。
コンストラクタとデストラクタ | |
---|---|
Scope (const Scope & other) | |
~Scope () |
パブリックファンクション | |
---|---|
ClearColocation () const | すべてのコロケーション制約をクリアします。 |
ColocateWith (const Operation & op) const | 新しいスコープを返します。 |
ColocateWith (const Output & out) const | 上記の便利な機能。 |
ExitOnError () const | 新しいスコープを返します。 |
GetCompositeOpScopes (const string & composite_op_name) const | |
GetUniqueNameForOp (const string & default_name) const | string op名が指定されていない場合は、default_nameを使用して一意の名前を返します。 |
NewSubScope (const string & child_scope_name) const | 新しいスコープを返します。 |
ToGraphDef (GraphDef *gdef) const | status()がStatus :: OK()の場合、このスコープに格納されているGraphオブジェクトをGraphDefプロトに変換し、Status :: OK()を返します。 |
UpdateStatus (const Status & s) const | void このスコープのステータスを更新します。 |
WithAssignedDevice (const string & assigned_device) const | 新しいスコープを返します。 |
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const | 新しいスコープを返します。 |
WithControlDependencies (const Output & control_dep) const | 上記と同じですが、control_dep出力を生成する操作に制御依存関係を追加すると便利です。 |
WithDevice (const string & device) const | 新しいスコープを返します。 |
WithKernelLabel (const string & kernel_label) const | 新しいスコープを返します。 |
WithNoControlDependencies () const | 新しいスコープを返します。 |
WithOpName (Ty... fragments) const | 新しいスコープを返します。 |
WithXlaCluster (const string & xla_cluster) const | 新しいスコープを返します。 |
control_deps () const | const std::vector< Operation > & |
graph () const | Graph * |
graph_as_shared_ptr () const | std::shared_ptr< Graph > |
ok () const | bool |
operator= (const Scope & other) | Scope & |
status () const |
パブリック静的関数 | |
---|---|
NewRootScope () | 新しいスコープを返します。 |
パブリックファンクション
ColocateWith
Scope ColocateWith( const Operation & op ) const
新しいスコープを返します。
返されたスコープ内で作成されたすべてのopsは、opが配置されているデバイスに同じ場所に配置されます。注:この関数は、デバイスへの操作の配置を制御するためにのみ内部ライブラリを使用することを目的としています。デバイス配置の実装は変更される可能性があるため、公共での使用は推奨されていません。
ExitOnError
Scope ExitOnError() const
新しいスコープを返します。
スコープにステータスを設定する代わりに、返されたスコープをスコープ引数として受け取るop-constructor関数は、エラーが検出されるとすぐに終了します。
GetCompositeOpScopes
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
GetUniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
op名が指定されていない場合は、default_nameを使用して一意の名前を返します。
NewSubScope
Scope NewSubScope( const string & child_scope_name ) const
新しいスコープを返します。
このスコープで作成されたOpsには、プレフィックスとしてname/child_scope_name
が付けられます。実際の名前は、現在のスコープで一意になります。他のすべてのプロパティは、現在のスコープから継承されます。 child_scope_name
が空の場合、 /
は省略されます。
範囲
Scope( const Scope & other )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
status()がStatus :: OK()の場合、このスコープに格納されているGraphオブジェクトをGraphDefプロトに変換し、Status :: OK()を返します。
それ以外の場合は、GraphDef変換を実行せずにエラーステータスをそのまま返します。
最新状況
void UpdateStatus( const Status & s ) const
このスコープのステータスを更新します。
注:ステータスオブジェクトは、このスコープのすべての子で共有されます。結果のステータスがStatus::OK()でなく、exit_on_error_がこのスコープに設定されている場合、この関数はLOG(FATAL)を呼び出して終了します。
WithAssignedDevice
Scope WithAssignedDevice( const string & assigned_device ) const
新しいスコープを返します。
返されたスコープ内で作成されたすべての操作では、割り当てられたデバイスがassigned_device
に設定されます。
WithControlDependencies
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
新しいスコープを返します。
返されたスコープ内で作成されたすべての操作は、制御の依存関係として、control_depsベクトルの操作の結合と現在のスコープの制御の依存関係を持ちます。
WithControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
上記と同じですが、control_dep出力を生成する操作に制御依存関係を追加すると便利です。
WithDevice
Scope WithDevice( const string & device ) const
新しいスコープを返します。
返されたスコープ内で作成されたすべての操作では、デバイスフィールドが「デバイス」に設定されます。
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
新しいスコープを返します。
新しいスコープで作成されたすべての操作には、「_kernel」属性の値としてkernel_labelが含まれます。
WithNoControlDependencies
Scope WithNoControlDependencies() const
新しいスコープを返します。
返されたスコープ内で作成されたすべての操作には、他の操作に対する制御の依存関係はありません。
WithOpName
Scope WithOpName( Ty... fragments ) const
新しいスコープを返します。
返されたスコープ内で作成されたすべての操作には、フォームname/StrCat(fragments...)[_suffix]
の名前が付けられます。
WithXlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
新しいスコープを返します。
返されたスコープ内で作成されたすべての操作では、_XlaCluster属性がxla_cluster
に設定されます。
control_deps
const std::vector< Operation > & control_deps() const
グラフ
Graph * graph() const
graph_as_shared_ptr
std::shared_ptr< Graph > graph_as_shared_ptr() const
わかった
bool ok() const
状態
Status status() const
〜スコープ
~Scope()
パブリック静的関数
NewRootScope
Scope NewRootScope()
新しいスコープを返します。
これにより、新しいグラフが作成され、このグラフで作成されたすべての操作で、返されたオブジェクトを「ルート」スコープとして使用する必要があります。