public final class Scope extends Object
A Scope
is a container for common properties applied to TensorFlow Ops. Normal user
code initializes a Scope
and provides it to Operation building classes. For example:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
An Operation building class acquires a Scope, and uses it to set properties on the underlying Tensorflow ops. For example:
// 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 hierarchy:
A Scope
provides various with()
methods that create a new scope. The new scope
typically has one property changed while other properties are inherited from the parent scope.
An example using Constant
implemented as before:
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, ...);
Scope objects are not thread-safe.
Constructor and Description |
---|
Scope(ExecutionEnvironment env)
Create a new top-level scope.
|
Modifier and Type | Method and Description |
---|---|
OperationBuilder |
applyControlDependencies(OperationBuilder builder)
Adds each Operand in controlDependencies as a control input to the provided builder.
|
ExecutionEnvironment |
env()
Returns the execution environment used by this scope.
|
String |
makeOpName(String defaultName)
Create a unique name for an operator, using a provided default if necessary.
|
Scope |
withControlDependencies(Iterable<Operand<?>> controls)
Returns a new scope where added operations will have the provided control dependencies.
|
Scope |
withName(String opName)
Return a new scope that uses the provided name for an op.
|
Scope |
withSubScope(String childScopeName)
Returns a new scope where added operations will have the provided name prefix.
|
public Scope(ExecutionEnvironment env)
env
- The execution environment used by the scope.public ExecutionEnvironment env()
public Scope withSubScope(String childScopeName)
Ops created with this scope will have name/childScopeName/
as the prefix. The actual
name will be unique in the returned scope. All other properties are inherited from the current
scope.
The child scope name must match the regular expression [A-Za-z0-9.][A-Za-z0-9_.\-]*
childScopeName
- name for the new child scopeIllegalArgumentException
- if the name is invalidpublic Scope withName(String opName)
Operations created within this scope will have a name of the form name/opName[_suffix]
. This lets you name a specific operator more meaningfully.
Names must match the regular expression [A-Za-z0-9.][A-Za-z0-9_.\-]*
opName
- name for an operator in the returned scopeIllegalArgumentException
- if the name is invalidpublic String makeOpName(String defaultName)
This is normally called only by operator building classes.
This method generates a unique name, appropriate for the name scope controlled by this instance. Typical operator building code might look like
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
Note: if you provide a composite operator building class (i.e, a class that creates a set of related operations by calling other operator building code), the provided name will act as a subscope to all underlying operators.
defaultName
- name for the underlying operator.IllegalArgumentException
- if the default name is invalid.public Scope withControlDependencies(Iterable<Operand<?>> controls)
Ops created with this scope will have a control edge from each of the provided controls. All other properties are inherited from the current scope.
controls
- control dependencies for ops created with the returned scopepublic OperationBuilder applyControlDependencies(OperationBuilder builder)
builder
- OperationBuilder to add control inputs toCopyright © 2022. All rights reserved.