Tensorflow オペレーションを作成するときに、共通名のプレフィックスなどの関連プロパティのグループを管理します。
Scope
、TensorFlow Ops に適用される共通プロパティのコンテナです。通常のユーザー コードはScope
を初期化し、それをオペレーション構築クラスに提供します。例えば:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
Operation 構築クラスはスコープを取得し、それを使用して基礎となる 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, ...);
スコープ オブジェクトはスレッドセーフではありません。
パブリックコンストラクター
パブリックメソッド
オペレーションビルダー | |
オペレーションビルダー | applyControlDependency ( OperationBuilderビルダー) controlDependency の各オペランドを、提供されたビルダーへのコントロール入力として追加します。 |
実行環境 | 環境() このスコープで使用される実行環境を返します。 |
弦 | getDeviceString () スコープからデバイス文字列を返します。 |
弦 | makeOpName (文字列のデフォルト名) 必要に応じて、提供されているデフォルトを使用して、演算子の一意の名前を作成します。 |
範囲 | |
範囲 | |
範囲 | withName (文字列 opName) 指定された操作名を使用する新しいスコープを返します。 |
範囲 | withNameAsSubScope (文字列のデフォルト名) 追加された操作の先頭にこのスコープの操作名 ( withName(String) で設定) が付加される新しいスコープを返します。設定されていない場合は指定されたデフォルトを返します。 |
範囲 | withSubScope (文字列 childScopeName) 追加されたオペレーションが指定された名前プレフィックスを持つ新しいスコープを返します。 |
継承されたメソッド
パブリックコンストラクター
パブリックメソッド
public OperationBuilder apply ( OperationBuilderビルダー)
デバイス仕様を適用し、controlDependency の各オペランドをコントロール入力として提供されたビルダーに追加します。
パラメータ
ビルダー | 制御入力とデバイス仕様を追加する OperationBuilder |
---|
public OperationBuilder applyControlDependency ( OperationBuilderビルダー)
controlDependency の各オペランドを、提供されたビルダーへのコントロール入力として追加します。
パラメータ
ビルダー | 制御入力を追加する OperationBuilder |
---|
パブリック String getDeviceString ()
スコープからデバイス文字列を返します。
public String makeOpName (String defaultName)
必要に応じて、提供されているデフォルトを使用して、演算子の一意の名前を作成します。
これは通常、クラスを構築する演算子によってのみ呼び出されます。
このメソッドは、このインスタンスによって制御される名前スコープに適した一意の名前を生成します。典型的なオペレータ構築コードは次のようになります。
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
注:複合オペレーター構築クラス (つまり、他のオペレーター構築コードを呼び出して一連の関連操作を作成するクラス) を提供する場合、指定された名前はすべての基礎となるオペレーターのサブスコープとして機能します。
パラメータ
デフォルト名 | 基礎となる演算子の名前。 |
---|
返品
- オペレーターの一意の名前。
投げる
IllegalArgumentException | デフォルト名が無効な場合。 |
---|
public Scope withControlDependency (Iterable< Op > コントロール)
追加された操作が提供されたコントロールの依存関係を持つ新しいスコープを返します。
このスコープで作成された Ops には、提供された各コントロールからのコントロール エッジが含まれます。他のすべてのプロパティは現在のスコープから継承されます。
パラメータ
コントロール | 返されたスコープで作成された操作の依存関係を制御します |
---|
返品
- 提供されたコントロールの依存関係を含む新しいスコープ
public Scope withDevice ( DeviceSpec deviceSpec)
操作に対して指定されたデバイス仕様を使用する新しいスコープを返します。
このスコープ内で作成されたオペレーションは、指定された仕様に一致するデバイス上に作成されたオペレーションを配置します。
パラメータ
デバイススペック | 返されたスコープ内のオペレーターのデバイス仕様 |
---|
返品
- 操作に opName を使用する新しいスコープ。
パブリックスコープwithName (文字列 opName)
指定された操作名を使用する新しいスコープを返します。
このスコープ内で作成されたオペレーションの名前はname/opName[_suffix]
という形式になります。これにより、特定の演算子にわかりやすい名前を付けることができます。
名前は正規表現[A-Za-z0-9.][A-Za-z0-9_.\-]*
と一致する必要があります。
パラメータ
操作名 | 返されたスコープ内の演算子の名前 |
---|
返品
- 操作に opName を使用する新しいスコープ。
投げる
IllegalArgumentException | 名前が無効な場合 |
---|
パブリックスコープwithNameAsSubScope (文字列defaultName)
追加された操作の先頭にこのスコープの操作名 ( withName(String)
で設定) が付加される新しいスコープを返します。設定されていない場合は指定されたデフォルトを返します。これは複合操作に使用することを目的としています。
このスコープで作成された Op には、プレフィックスとしてname/opName/
が付きます。実際の名前は、返されるスコープ内で一意になります。他のすべてのプロパティは現在のスコープから継承されます。
デフォルトの子スコープ名は、正規表現[A-Za-z0-9.][A-Za-z0-9_.\-]*
と一致する必要があります。
パラメータ
デフォルト名 | このスコープの名前が設定されていない場合は、サブスコープの名前。 |
---|
返品
- 新しいサブスコープ
投げる
IllegalArgumentException | 名前が無効な場合 |
---|
パブリックスコープwithSubScope (String childScopeName)
追加されたオペレーションが指定された名前プレフィックスを持つ新しいスコープを返します。
このスコープで作成された Ops には、プレフィックスとしてname/childScopeName/
が付きます。実際の名前は、返されるスコープ内で一意になります。他のすべてのプロパティは現在のスコープから継承されます。
子スコープ名は正規表現[A-Za-z0-9.][A-Za-z0-9_.\-]*
と一致する必要があります。
パラメータ
子のスコープ名 | 新しい子スコープの名前 |
---|
返品
- 新しいサブスコープ
投げる
IllegalArgumentException | 名前が無効な場合 |
---|