Zarządza grupami powiązanych właściwości podczas tworzenia operacji Tensorflow, takich jak przedrostek nazwy pospolitej.
Scope
to kontener zawierający typowe właściwości stosowane w TensorFlow Ops. Normalny kod użytkownika inicjuje Scope
i dostarcza go do klas budujących Operation. Na przykład:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
Klasa budynku Operation uzyskuje zakres i używa go do ustawiania właściwości w bazowych operacjach Tensorflow. Na przykład:
// 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()
...
}
}
Hierarchia zakresów:
Scope
udostępnia różne metody with()
, które tworzą nowy zakres. Nowy zakres zwykle ma zmienioną jedną właściwość, podczas gdy inne właściwości są dziedziczone z zakresu nadrzędnego.
Przykład wykorzystujący Constant
zaimplementowany jak poprzednio:
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, ...);
Obiekty zakresu nie są bezpieczne dla wątków.
Konstruktorzy publiczni
Metody publiczne
OperationBuilder | applyControlDependencies (konstruktor OperationBuilder ) Dodaje każdy operand w controlDependencies jako dane wejściowe sterujące do podanego konstruktora. |
ExecutionEnvironment | env () Zwraca środowisko wykonawcze używane przez ten zakres. |
Strunowy | makeOpName (String defaultName) Utwórz unikalną nazwę dla operatora, używając podanej wartości domyślnej, jeśli to konieczne. |
Zakres | withControlDependencies ( kontrolki Iterable < Operand <? >>) Zwraca nowy zakres, w którym dodane operacje będą miały podane zależności kontrolne. |
Zakres | withName (String opName) Zwróć nowy zakres, który używa podanej nazwy dla op. |
Zakres | withSubScope (String childScopeName) Zwraca nowy zakres, w którym dodane operacje będą miały podany przedrostek nazwy. |
Dziedziczone metody
Konstruktorzy publiczni
public Scope (środowisko ExecutionEnvironment )
Utwórz nowy zakres najwyższego poziomu.
Parametry
env | Środowisko wykonawcze używane przez zakres. |
---|
Metody publiczne
public OperationBuilder applyControlDependencies (konstruktor OperationBuilder )
Dodaje każdy operand w controlDependencies jako dane wejściowe sterujące do podanego konstruktora.
Parametry
budowniczy | OperationBuilder, aby dodać wejścia sterujące do |
---|
public String makeOpName (String defaultName)
Utwórz unikalną nazwę dla operatora, używając podanej wartości domyślnej, jeśli to konieczne.
Zwykle jest to wywoływane tylko przez klasy budujące operatora.
Ta metoda generuje unikatową nazwę odpowiednią dla zakresu nazwy kontrolowanego przez to wystąpienie. Typowy kod budynku operatora może wyglądać jak
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
Uwaga: jeśli podasz złożoną klasę budynku operatora (tj. Klasę, która tworzy zestaw powiązanych operacji przez wywołanie kodu budynku innego operatora), podana nazwa będzie działać jako zakres podrzędny dla wszystkich operatorów bazowych.
Parametry
defaultName | nazwa operatora bazowego. |
---|
Zwroty
- unikalna nazwa operatora.
Rzuty
IllegalArgumentException | jeśli domyślna nazwa jest nieprawidłowa. |
---|
public Scope withControlDependencies ( Iterable < Operand <? >> controls)
Zwraca nowy zakres, w którym dodane operacje będą miały podane zależności kontrolne.
Operacje utworzone w tym zakresie będą miały krawędź kontrolną z każdego z podanych formantów. Wszystkie inne właściwości są dziedziczone z bieżącego zakresu.
Parametry
sterownica | zależności kontrolne dla operacji utworzonych za pomocą zwróconego zakresu |
---|
Zwroty
- nowy zakres z podanymi zależnościami sterującymi
public Scope withName (String opName)
Zwróć nowy zakres, który używa podanej nazwy dla op.
Operacje utworzone w tym zakresie będą miały nazwę w postaci name/opName[_suffix]
. Pozwala to na bardziej znaczące nazwanie konkretnego operatora.
Nazwy muszą pasować do wyrażenia regularnego [A-Za-z0-9.][A-Za-z0-9_.\-]*
Parametry
opName | nazwa operatora w zwróconym zakresie |
---|
Zwroty
- nowy zakres, który używa opName do operacji.
Rzuty
IllegalArgumentException | jeśli nazwa jest nieprawidłowa |
---|
public Scope withSubScope (String childScopeName)
Zwraca nowy zakres, w którym dodane operacje będą miały podany przedrostek nazwy.
Operacje utworzone w tym zakresie będą miały name/childScopeName/
jako przedrostek. Rzeczywista nazwa będzie unikalna w zwróconym zakresie. Wszystkie inne właściwości są dziedziczone z bieżącego zakresu.
Nazwa zakresu podrzędnego musi być zgodna z wyrażeniem regularnym [A-Za-z0-9.][A-Za-z0-9_.\-]*
Parametry
childScopeName | nazwa nowego zakresu podrzędnego |
---|
Zwroty
- nowy zakres
Rzuty
IllegalArgumentException | jeśli nazwa jest nieprawidłowa |
---|