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 przedrostek 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 skonstruowany op przejmuje właściwości obiektu.

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. W nowym zakresie zazwyczaj zmieniana jest jedna właściwość, podczas gdy inne właściwości są dziedziczone z zakresu nadrzędnego. Metoda NewSubScope(name) dołącza name do przedrostka nazw operacji utworzonych w zakresie, a WithOpName() zmienia sufiks, który w przeciwnym razie byłby 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 . Spowoduje to utworzenie zasobów współdzielonych przez wszystkie zakresy podrzędne, które dziedziczą z tego zakresu, bezpośrednio lub przechodnio. Na przykład nowy zakres tworzy nowy obiekt Graph, do którego dodawane są operacje, gdy nowy zakres lub jego elementy podrzędne są używane przez konstruktora Op. Nowy zakres posiada również obiekt Status , który będzie używany do wskazywania błędów przez funkcje konstruktora op 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 wątku:

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

Konstruktory i destruktory

Scope (const Scope & other)
~Scope ()

Funkcje publiczne

ClearColocation () const
Usuń wszystkie ograniczenia kolokacji.
ColocateWith (const Operation & op) const
Zwróć nowy zakres.
ColocateWith (const Output & out) const
Funkcja wygodna 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 nazwy_domyślnej, jeśli nazwa operacji nie została określona.
NewSubScope (const string & child_scope_name) const
Zwróć nowy zakres.
ToGraphDef (GraphDef *gdef) const
Jeśli status() to Status::OK(), przekonwertuj obiekt Graph przechowywany w tym zakresie na proto GraphDef i zwróć Status::OK().
UpdateStatus (const Status s) const
void
Zaktualizuj stan tego zakresu.
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
To samo co powyżej, ale wygodnie jest dodać zależność sterowania od operacji generującej wynik 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

Publiczne funkcje statyczne

NewRootScope ()
Zwróć nowy zakres.

Funkcje publiczne

Wyczyść Kolokację

Scope ClearColocation() const 

Usuń wszystkie ograniczenia kolokacji.

KolokujZ

Scope ColocateWith(
  const Operation & op
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie będą zlokalizowane na urządzeniu, na którym znajduje się operacja. UWAGA: Ta funkcja jest przeznaczona do wykorzystania bibliotek wewnętrznych wyłącznie do kontrolowania rozmieszczenia operacji na urządzeniach. Nie zaleca się użytku publicznego, ponieważ sposób rozmieszczenia urządzeń może ulec zmianie.

KolokujZ

Scope ColocateWith(
  const Output & out
) const 

Funkcja wygodna dla powyższych.

Wyjdź przy błędzie

Scope ExitOnError() const 

Zwróć nowy zakres.

Funkcje konstruktora op, przyjmując zwrócony zakres jako argument zakresu, zostaną zakończone natychmiast po wykryciu błędu, zamiast ustawiać status zakresu.

Pobierz CompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

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

Nowy podzakres

Scope NewSubScope(
  const string & child_scope_name
) const 

Zwróć nowy zakres.

Operacje utworzone przy użyciu tego zakresu będą miały name/child_scope_name podrzędnego. Rzeczywista nazwa będzie unikalna w bieżącym zakresie. Wszystkie pozostałe właściwości są dziedziczone z bieżącego zakresu. Jeśli child_scope_name jest pusta, znak / jest pomijany.

Zakres

 Scope(
  const Scope & other
)

DoWykresuDef

Status ToGraphDef(
  GraphDef *gdef
) const 

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

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

Aktualizuj stan

void UpdateStatus(
  const Status s
) const 

Zaktualizuj stan tego zakresu.

Uwaga: Obiekt stanu jest współdzielony przez wszystkie elementy podrzędne tego zakresu. Jeśli wynikowy status nie jest Status::OK() i w tym zakresie ustawiono exit_on_error_, funkcja kończy się poprzez 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 na assigned_device .

Z zależnościami kontrolnymi

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 sumę operacji w wektorze control_deps i zależności kontrolne bieżącego zakresu.

Z zależnościami kontrolnymi

Scope WithControlDependencies(
  const Output & control_dep
) const 

To samo co powyżej, ale wygodnie jest dodać zależność sterowania od operacji generującej wynik control_dep.

Z urzą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 KernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone przy użyciu nowego zakresu 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 w postaci name/StrCat(fragments...)[_suffix]

ZXlaCluster

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 .

kontrola_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

NowyRootScope

Scope NewRootScope()

Zwróć nowy zakres.

Spowoduje to utworzenie nowego wykresu i wszystkie operacje wykonane na tym wykresie powinny używać zwróconego obiektu jako zakresu „głównego”.