Scope

publiczna klasa końcowa Zakres

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

Zakres (środowisko ExecutionEnvironment )
Utwórz nowy zakres najwyższego poziomu.

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 ExecutionEnvironment env ()

Zwraca środowisko wykonawcze używane przez ten zakres.

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