przepływ tensorowy:: Zakres

#include <scope.h>

Obiekt Scope reprezentuje zestaw powiązanych operacji TensorFlow, które mają te same właściwości, takie jak prefiks nazwy pospolitej.

Streszczenie

Obiekt Scope jest kontenerem dla właściwości TensorFlow Op. Konstruktory op otrzymują obiekt Scope jako obowiązkowy pierwszy argument, a skonstruowana op uzyskuje właściwości w obiekcie.

Prosty przykład:

using namespace ops;
Scope root = Scope::NewRootScope();
auto c1 = Const(root, { {1, 1} });
auto m = MatMul(root, c1, { {41}, {1} });
GraphDef gdef;
Status s = root.ToGraphDef(&gdef);
if (!s.ok()) { ... }

Hierarchia zakresu :

Klasa Scope udostępnia różne funkcje With<>, które tworzą nowy zakres. Nowy zakres ma zazwyczaj jedną zmienioną właściwość, podczas gdy inne właściwości są dziedziczone z zakresu nadrzędnego. Metoda NewSubScope(name) dodaje name do prefiksu nazw operacji utworzonych w zakresie, a WithOpName() zmienia sufiks, który w przeciwnym razie jest domyślnym typem operacji.

Przykłady nazw:

Scope root = Scope::NewRootScope();
Scope linear = root.NewSubScope("linear");
// W will be named "linear/W"
auto W = Variable(linear.WithOpName("W"),
                  {2, 2}, DT_FLOAT);
// b will be named "linear/b_3"
int idx = 3;
auto b = Variable(linear.WithOpName("b_", idx),
                  {2}, DT_FLOAT);
auto x = Const(linear, {...});  // name: "linear/Const"
auto m = MatMul(linear, x, W);  // name: "linear/MatMul"
auto r = BiasAdd(linear, m, b); // name: "linear/BiasAdd"

Żywotność zakresu :

Nowy zakres jest tworzony przez wywołanie Scope::NewRootScope . Powoduje to utworzenie niektórych zasobów, które są współużytkowane przez wszystkie zakresy podrzędne, które dziedziczą z tego zakresu, bezpośrednio lub przechodnie. Na przykład nowy zakres tworzy nowy obiekt Graph, do którego dodawane są operacje, gdy nowy zakres lub jego elementy potomne są używane przez konstruktor Op. Nowy zakres zawiera również obiekt Status, który będzie używany do wskazywania błędów przez funkcje Op-constructor wywoływane w dowolnym zakresie podrzędnym. Funkcje konstruktora Op muszą sprawdzić status zakresu, wywołując metodę ok() przed przystąpieniem do konstruowania op.

Bezpieczeństwo gwintu:

Obiekt Scope NIE jest bezpieczny dla wątków. Wątki nie mogą jednocześnie wywoływać funkcji konstruktora op w tym samym obiekcie Scope .

Konstruktory i destruktory

Scope (const Scope & other)
~Scope ()

Funkcje publiczne

ClearColocation () const
Usuń wszystkie ograniczenia dotyczące kolokacji.
ColocateWith (const Operation & op) const
Zwróć nowy zakres.
ColocateWith (const Output & out) const
Funkcja wygody dla powyższych.
ExitOnError () const
Zwróć nowy zakres.
GetCompositeOpScopes (const string & composite_op_name) const
GetUniqueNameForOp (const string & default_name) const
string
Zwróć unikalną nazwę, używając default_name, jeśli nazwa operacji nie została określona.
NewSubScope (const string & child_scope_name) const
Zwróć nowy zakres.
ToGraphDef (GraphDef *gdef) const
Status
Jeśli status() jest Status::OK(), przekonwertuj obiekt Graph przechowywany w tym zakresie na proto GraphDef i zwróć Status::OK().
UpdateStatus (const Status & s) const
void
Zaktualizuj stan w tym zakresie.
WithAssignedDevice (const string & assigned_device) const
Zwraca nowy zakres.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Zwróć nowy zakres.
WithControlDependencies (const Output & control_dep) const
Tak samo jak powyżej, ale wygodnie jest dodać zależność sterowania od operacji wytwarzającej dane wyjściowe control_dep.
WithDevice (const string & device) const
Zwróć nowy zakres.
WithKernelLabel (const string & kernel_label) const
Zwróć nowy zakres.
WithNoControlDependencies () const
Zwróć nowy zakres.
WithOpName (Ty... fragments) const
Zwróć nowy zakres.
WithXlaCluster (const string & xla_cluster) const
Zwraca nowy zakres.
control_deps () const
const std::vector< Operation > &
graph () const
Graph *
graph_as_shared_ptr () const
std::shared_ptr< Graph >
ok () const
bool
operator= (const Scope & other)
status () const
Status

Publiczne funkcje statyczne

NewRootScope ()
Zwróć nowy zakres.

Funkcje publiczne

Wyczyść Kolokacja

Scope ClearColocation() const 

Usuń wszystkie ograniczenia dotyczące kolokacji.

ColocateWith

Scope ColocateWith(
  const Operation & op
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie zostaną umieszczone na urządzeniu, na którym znajduje się operacja. UWAGA: Ta funkcja jest przeznaczona do używania wewnętrznych bibliotek tylko do kontrolowania umieszczania operacji na urządzeniach. Nie zachęca się do użytku publicznego, ponieważ implementacja rozmieszczenia urządzeń może ulec zmianie.

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

Funkcja wygody dla powyższych.

Błąd wyjścia

Scope ExitOnError() const 

Zwróć nowy zakres.

Funkcje konstruktora op przyjmujące zwrócony zakres jako argument zakresu zostaną zakończone, gdy tylko zostanie wykryty błąd, zamiast ustawiać status zakresu.

GetCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

Zwróć unikalną nazwę, używając default_name, jeśli nazwa operacji nie została określona.

Nowy podzakres

Scope NewSubScope(
  const string & child_scope_name
) const 

Zwróć nowy zakres.

Operacje utworzone w tym zakresie będą miały prefiks name/child_scope_name . Rzeczywista nazwa będzie unikalna w bieżącym zakresie. Wszystkie inne właściwości są dziedziczone z bieżącego zakresu. Jeśli child_scope_name jest pusta, / jest usuwany.

Zakres

 Scope(
  const Scope & other
)

ToGraphDef

Status ToGraphDef(
  GraphDef *gdef
) const 

Jeśli status() jest Status::OK(), przekonwertuj obiekt Graph przechowywany w tym zakresie na proto GraphDef i zwróć Status::OK().

W przeciwnym razie zwróć stan błędu bez wykonywania konwersji GraphDef.

Status aktualizacji

void UpdateStatus(
  const Status & s
) const 

Zaktualizuj stan w tym zakresie.

Uwaga: Obiekt statusu jest współużytkowany przez wszystkie elementy podrzędne tego zakresu. Jeśli wynikowy status nie jest Status::OK() i exit_on_error_ jest ustawione w tym zakresie, funkcja kończy działanie przez wywołanie LOG(FATAL).

Z przypisanym urządzeniem

Scope WithAssignedDevice(
  const string & assigned_device
) const 

Zwraca nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie będą miały przypisane urządzenie ustawione assigned_device .

Z zależnościami sterowania

Scope WithControlDependencies(
  const gtl::ArraySlice< Operation > & control_deps
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie będą miały jako zależności kontrolne unię operacji w wektorze control_deps i zależności kontrolne bieżącego zakresu.

Z zależnościami sterowania

Scope WithControlDependencies(
  const Output & control_dep
) const 

Tak samo jak powyżej, ale wygodnie jest dodać zależność sterowania od operacji wytwarzającej dane wyjściowe control_dep.

ZUrządzeniem

Scope WithDevice(
  const string & device
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie będą miały pole urządzenia ustawione na „urządzenie”.

Z etykietą jądra

Scope WithKernelLabel(
  const string & kernel_label
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w nowym zakresie będą miały kernel_label jako wartość atrybutu '_kernel';

Bez zależności kontrolnych

Scope WithNoControlDependencies() const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie nie będą miały zależności kontrolnych od innych operacji.

ZOpName

Scope WithOpName(
  Ty... fragments
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie będą miały nazwy postaci name/StrCat(fragments...)[_suffix]

ZXlaClusterem

Scope WithXlaCluster(
  const string & xla_cluster
) const 

Zwraca nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie będą miały atrybut _XlaCluster ustawiony na xla_cluster .

control_deps

const std::vector< Operation > & control_deps() const 

wykres

Graph * graph() const 

graph_as_shared_ptr

std::shared_ptr< Graph > graph_as_shared_ptr() const 

ok

bool ok() const 

operator=

Scope & operator=(
  const Scope & other
)

status

Status status() const 

~Zakres

 ~Scope()

Publiczne funkcje statyczne

Nowy zakres główny

Scope NewRootScope()

Zwróć nowy zakres.

Spowoduje to utworzenie nowego grafu i wszystkie operacje konstruowane na tym grafie powinny używać zwróconego obiektu jako zakresu „root”.