このページは Cloud Translation API によって翻訳されました。
Switch to English

tensorflow :: 範囲

#include <scope.h>

Scopeオブジェクトは、共通の名前の接頭辞など、同じプロパティを持つ関連するTensorFlow演算のセットを表します。

概要

ScopeオブジェクトはTensorFlow Opプロパティのコンテナです。 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を呼び出すことで作成されます。これにより、このスコープから直接または推移的に継承するすべての子スコープによって共有されるリソースがいくつか作成されます。たとえば、新しいスコープは、新しいスコープまたはその子がOpコンストラクターによって使用されたときに操作が追加される新しいGraphオブジェクトを作成します。新しいスコープには、子スコープで呼び出された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 ()
新しいスコープを返します。

公開機能

ClearColocation

Scope ClearColocation() const 

コロケーション制約をすべてクリアします。

ColocateWith

Scope ColocateWith(
  const Operation & op
) const 

新しいスコープを返します。

返されたスコープ内で作成されたすべてのopsは、opが配置されているデバイス上に配置されます。注:この関数は、デバイスへのopの配置を制御するためにのみ内部ライブラリを使用することを目的としています。デバイス配置の実装は変更される可能性があるため、公共使用は推奨されません。

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

上記の便利機能。

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 

新しいスコープを返します。

このスコープで作成されたname/child_scope_nameは、プレフィックスとして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に設定さassigned_deviceます。

WithControlDependencies

Scope WithControlDependencies(
  const gtl::ArraySlice< Operation > & control_deps
) const 

新しいスコープを返します。

返されたスコープ内で作成されたすべてのopは、制御依存関係として、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 

新しいスコープを返します。

新しいスコープで作成されたすべてのopは、 '_ kernel'属性の値としてkernel_labelを持ちます。

WithNoControlDependencies

Scope WithNoControlDependencies() const 

新しいスコープを返します。

返されたスコープ内で作成されたすべての操作には、他の操作に対する制御の依存関係はありません。

WithOpName

Scope WithOpName(
  Ty... fragments
) const 

新しいスコープを返します。

返されたスコープ内で作成されたすべての操作は、 name/StrCat(fragments...)[_suffix]という形式のname/StrCat(fragments...)[_suffix]

WithXlaCluster

Scope WithXlaCluster(
  const string & xla_cluster
) const 

新しいスコープを返します。

返されたスコープ内で作成されたすべてのopsの_XlaCluster属性はxla_clusterに設定され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 

OK

bool ok() const 

演算子=

Scope & operator=(
  const Scope & other
)

状態

Status status() const 

〜スコープ

 ~Scope()

パブリック静的関数

NewRootScope

Scope NewRootScope()

新しいスコープを返します。

これにより新しいグラフが作成され、このグラフで作成されるすべての操作は、返されたオブジェクトを「ルート」スコープとして使用する必要があります。