Zarządza grupami powiązanych właściwości podczas tworzenia operacji Tensorflow, takich jak przedrostek nazwy pospolitej.
Scope
to kontener dla typowych właściwości stosowanych w operacjach TensorFlow. Normalny kod użytkownika inicjuje Scope
i udostępnia go klasom budowania operacji. Na przykład:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
Klasa budowania Operacji nabywa zakres i używa go do ustawiania właściwości bazowych operacji 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 zakresu:
Scope
udostępnia różne metody with()
, które tworzą nowy zakres. W nowym zakresie zazwyczaj zmieniana jest jedna właściwość, podczas gdy inne właściwości są dziedziczone z zakresu nadrzędnego.
Przykład użycia Constant
zaimplementowanego 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
Konstruktor operacji | ApplyControlDependency (konstruktor OperationBuilder ) Dodaje każdy operand w controlDependency jako dane wejściowe sterujące do dostarczonego konstruktora. |
Środowisko wykonania | środowisko () Zwraca środowisko wykonawcze używane przez ten zakres. |
Smyczkowy | makeOpName (ciąg domyślna nazwa) Utwórz unikalną nazwę dla operatora, korzystając w razie potrzeby z podanej wartości domyślnej. |
Zakres | withControlDependency (kontrolki Iterable< Operand <?>>) Zwraca nowy zakres, w którym dodane operacje będą miały podane zależności kontrolne. |
Zakres | withName (ciąg znaków opName) Zwróć nowy zakres, który używa podanej nazwy dla operacji. |
Zakres | withSubScope (Ciąg childScopeName) Zwraca nowy zakres, w którym dodane operacje będą miały podany przedrostek nazwy. |
Metody dziedziczone
Konstruktorzy publiczni
Zakres publiczny ( ExecutionEnvironment env)
Utwórz nowy zakres najwyższego poziomu.
Parametry
śr | Środowisko wykonawcze używane przez zakres. |
---|
Metody publiczne
public OperationBuilder ApplyControlDependency (konstruktor OperationBuilder )
Dodaje każdy operand w controlDependency jako dane wejściowe sterujące do dostarczonego konstruktora.
Parametry
budowniczy | OperationBuilder, do którego chcesz dodać wejścia sterujące |
---|
public String makeOpName (String defaultName)
Utwórz unikalną nazwę dla operatora, korzystając w razie potrzeby z podanej wartości domyślnej.
Zwykle jest to wywoływane tylko przez klasy budujące operatory.
Ta metoda generuje unikalną nazwę, odpowiednią dla zakresu nazw kontrolowanego przez tę instancję. Może wyglądać typowy kod budowania operatora
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
Uwaga: jeśli podasz klasę budowania operatorów złożonych (tzn. klasę, która tworzy zestaw powiązanych operacji poprzez wywołanie kodu budowania innego operatora), podana nazwa będzie działać jako podzakres dla wszystkich operatorów bazowych.
Parametry
nazwa domyślna | nazwa operatora bazowego. |
---|
Powroty
- unikalna nazwa operatora.
Rzuca
Wyjątek IllegalArgument | jeśli domyślna nazwa jest nieprawidłowa. |
---|
zakres publiczny z zależnościami kontrolnymi (kontrolki Iterable< Operand <?>>)
Zwraca nowy zakres, w którym dodane operacje będą miały podane zależności kontrolne.
Operacje utworzone przy użyciu tego zakresu będą miały przewagę kontrolną dzięki każdemu z dostępnych elementów sterujących. Wszystkie pozostałe właściwości są dziedziczone z bieżącego zakresu.
Parametry
sterownica | zależności kontrolne dla operacji utworzonych przy użyciu zwróconego zakresu |
---|
Powroty
- nowy zakres z dostarczonymi zależnościami kontrolnymi
Zakres publiczny o nazwie (String opName)
Zwróć nowy zakres, który używa podanej nazwy dla operacji.
Operacje utworzone w tym zakresie będą miały nazwę w postaci name/opName[_suffix]
. Dzięki temu możesz nadać konkretnemu operatorowi bardziej znaczącą nazwę.
Nazwy muszą pasować do wyrażenia regularnego [A-Za-z0-9.][A-Za-z0-9_.\-]*
Parametry
nazwa op | nazwa operatora w zwróconym zakresie |
---|
Powroty
- nowy zakres, który używa opName do operacji.
Rzuca
Wyjątek IllegalArgument | jeśli nazwa jest nieprawidłowa |
---|
Zakres publiczny withSubScope (String childScopeName)
Zwraca nowy zakres, w którym dodane operacje będą miały podany przedrostek nazwy.
Operacje utworzone przy użyciu tego zakresu będą miały przedrostek name/childScopeName/
. Rzeczywista nazwa będzie unikalna w zwróconym zakresie. Wszystkie pozostałe właściwości są dziedziczone z bieżącego zakresu.
Nazwa zakresu podrzędnego musi pasować do wyrażenia regularnego [A-Za-z0-9.][A-Za-z0-9_.\-]*
Parametry
nazwazakresu podrzędnego | nazwa nowego zakresu podrzędnego |
---|
Powroty
- nowy podzakres
Rzuca
Wyjątek IllegalArgument | jeśli nazwa jest nieprawidłowa |
---|