共通名プレフィックスなど、Tensorflowオペレーションを作成するときに、関連するプロパティのグループを管理します。
Scope
は、TensorFlowOpsに適用される一般的なプロパティのコンテナです。通常のユーザーコードはScope
を初期化し、オペレーション構築クラスに提供します。例:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
オペレーションビルディングクラスはスコープを取得し、それを使用して基盤となるTensorflowオペレーションにプロパティを設定します。例:
// An operator class that adds a constant.
public class Constant {
public static Constant create(Scope scope, ...) {
scope.graph().opBuilder(
"Const", scope.makeOpName("Const"))
.setAttr(...)
.build()
...
}
}
スコープ階層:
Scope
は、新しいスコープを作成するさまざまなwith()
メソッドを提供します。新しいスコープでは通常、1つのプロパティが変更され、他のプロパティは親スコープから継承されます。
以前のように実装されたConstant
を使用した例:
Scope root = new Scope(graph);
// The linear subscope will generate names like linear/...
Scope linear = Scope.withSubScope("linear");
// This op name will be "linear/W"
Constant.create(linear.withName("W"), ...);
// This op will be "linear/Const", using the default
// name provided by Constant
Constant.create(linear, ...);
// This op will be "linear/Const_1", using the default
// name provided by Constant and making it unique within
// this scope
Constant.create(linear, ...);
スコープオブジェクトはスレッドセーフではありません。
パブリックコンストラクター
パブリックメソッド
OperationBuilder | applyControlDependencies ( OperationBuilderビルダー) 提供されたビルダーへの制御入力として、controlDependenciesの各オペランドを追加します。 |
ExecutionEnvironment | env () このスコープで使用される実行環境を返します。 |
ストリング | makeOpName (String defaultName) 必要に応じて提供されたデフォルトを使用して、オペレーターの一意の名前を作成します。 |
範囲 | |
範囲 | withName (String opName) opに指定された名前を使用する新しいスコープを返します。 |
範囲 | withSubScope (String childScopeName) 追加された操作に指定された名前プレフィックスが付いた新しいスコープを返します。 |
継承されたメソッド
パブリックコンストラクター
パブリックメソッド
public OperationBuilder applyControlDependencies ( OperationBuilderビルダー)
提供されたビルダーへの制御入力として、controlDependenciesの各オペランドを追加します。
パラメーター
ビルダー | 制御入力を追加するOperationBuilder |
---|
public String makeOpName (String defaultName)
必要に応じて提供されたデフォルトを使用して、オペレーターの一意の名前を作成します。
これは通常、オペレーター構築クラスによってのみ呼び出されます。
このメソッドは、このインスタンスによって制御される名前スコープに適した一意の名前を生成します。典型的なオペレーター構築コードは
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
のようになります注:複合演算子構築クラス(つまり、他の演算子構築コードを呼び出すことによって関連する操作のセットを作成するクラス)を提供する場合、提供された名前は、基礎となるすべての演算子のサブスコープとして機能します。
パラメーター
defaultName | 基になる演算子の名前。 |
---|
戻り値
- オペレーターの一意の名前。
投げる
IllegalArgumentException | デフォルト名が無効な場合。 |
---|
public Scope withControlDependencies (Iterable < Operand <?>>コントロール)
追加された操作が提供されたコントロールの依存関係を持つ新しいスコープを返します。
このスコープで作成された操作には、提供されている各コントロールからのコントロールエッジがあります。他のすべてのプロパティは、現在のスコープから継承されます。
パラメーター
コントロール | 返されたスコープで作成されたopsの依存関係を制御する |
---|
戻り値
- 提供された制御依存関係を持つ新しいスコープ
public Scope withName (String opName)
opに指定された名前を使用する新しいスコープを返します。
このスコープ内で作成された操作には、 name/opName[_suffix]
という形式のname/opName[_suffix]
。これにより、特定の演算子にもっと意味のある名前を付けることができます。
名前は正規表現[A-Za-z0-9.][A-Za-z0-9_.\-]*
一致する必要があり[A-Za-z0-9.][A-Za-z0-9_.\-]*
パラメーター
opName | 返されたスコープ内のオペレーターの名前 |
---|
戻り値
- 操作にopNameを使用する新しいスコープ。
投げる
IllegalArgumentException | 名前が無効な場合 |
---|
public Scope withSubScope (String childScopeName)
追加された操作に指定された名前プレフィックスが付いた新しいスコープを返します。
このスコープで作成されたOpsには、プレフィックスとしてname/childScopeName/
られます。実際の名前は、返されるスコープ内で一意になります。他のすべてのプロパティは、現在のスコープから継承されます。
子スコープ名は、正規表現[A-Za-z0-9.][A-Za-z0-9_.\-]*
一致する必要があり[A-Za-z0-9.][A-Za-z0-9_.\-]*
パラメーター
childScopeName | 新しい子スコープの名前 |
---|
戻り値
- 新しいサブスコープ
投げる
IllegalArgumentException | 名前が無効な場合 |
---|