tensorflow:: Zakres

#include <scope.h>

Obiekt Scope reprezentuje zestaw powiązanych operacji TensorFlow, które mają takie same właściwości, na przykład wspólny prefiks nazwy.

Streszczenie

Obiekt Scope to kontener 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 z 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. Nowy zakres zazwyczaj ma zmienioną jedną właściwość, a pozostałe 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 domyślnie odpowiada typowi 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"

Czas życia zakresu :

Nowy zakres jest tworzony poprzez wywołanie Scope::NewRootScope . Powoduje to utworzenie zasobów współdzielonych przez wszystkie zakresy potomne dziedziczące 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 potomne są używane przez konstruktor Op. Nowy zakres zawiera również obiekt Status , który będzie używany do sygnalizowania błędów przez funkcje konstruktora Op wywoływane w dowolnym zakresie potomnym. Funkcje konstruktora Op muszą sprawdzić status zakresu, wywołując metodę ok() przed przystąpieniem do konstruowania op.

Bezpieczeństwo gwintów:

Obiekt Scope NIE jest bezpieczny dla wątków. Wątki nie mogą jednocześnie wywoływać funkcji konstruktora operacyjnego 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 ułatwiająca korzystanie z urządzenia powyżej.
ExitOnError () const
Zwróć nowy zakres.
GetCompositeOpScopes (const string & composite_op_name) const
GetUniqueNameForOp (const string & default_name) const
string
Zwraca unikalną nazwę, używając default_name, jeśli nie określono nazwy operacji.
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 status 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
Podobnie jak powyżej, ale wygodniej jest dodać zależność sterowania od operacji produkują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

Publiczne funkcje statyczne

NewRootScope ()
Zwróć nowy zakres.

Funkcje publiczne

ClearColocation

Scope ClearColocation() const 

Usuń wszystkie ograniczenia dotyczące kolokacji.

Współlokalizuj się

Scope ColocateWith(
  const Operation & op
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone w zwróconym zakresie będą współlokalizowane na urządzeniu, na którym zostały umieszczone. UWAGA: Ta funkcja jest przeznaczona wyłącznie do użytku w bibliotekach wewnętrznych, w celu kontrolowania rozmieszczania operacji na urządzeniach. Nie zaleca się publicznego używania, ponieważ implementacja rozmieszczania urządzeń może ulec zmianie.

Współlokalizuj się

Scope ColocateWith(
  const Output & out
) const 

Funkcja ułatwiająca korzystanie z urządzenia powyżej.

Wyjście przy błędzie

Scope ExitOnError() const 

Zwróć nowy zakres.

Funkcje konstruktora op przyjmujące zwrócony zakres jako argument zakresu zakończą działanie natychmiast po wykryciu błędu, zamiast ustawiać status na zakresie.

PobierzCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

PobierzUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

Zwraca unikalną nazwę, używając default_name, jeśli nie określono nazwy operacji.

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 . Nazwa będzie unikatowa w bieżącym zakresie. Wszystkie pozostałe właściwości są dziedziczone z bieżącego zakresu. Jeśli child_scope_name jest puste, znak / jest pomijany.

Zakres

 Scope(
  const Scope & other
)

ToGraphDef

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 wypadku zwróć status błędu bez wykonywania konwersji GraphDef.

Aktualizacja statusu

void UpdateStatus(
  const Status s
) const 

Zaktualizuj status tego zakresu.

Uwaga: Obiekt statusu jest współdzielony przez wszystkie dzieci tego zakresu. Jeśli wynikowy status jest inny niż Status::OK(), a w tym zakresie ustawiono parametr exit_on_error_, ta funkcja kończy działanie, wywołując 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 .

WithControlDependencies

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

WithControlDependencies

Scope WithControlDependencies(
  const Output & control_dep
) const 

Podobnie jak powyżej, ale wygodniej jest dodać zależność sterowania od operacji produkującej dane wyjściowe 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 'device'.

Z etykietą jądra

Scope WithKernelLabel(
  const string & kernel_label
) const 

Zwróć nowy zakres.

Wszystkie operacje utworzone przy użyciu nowego zakresu będą miały atrybut '_kernel' o wartości kernel_label;

Bez zależności kontrolnych

Scope WithNoControlDependencies() const 

Zwróć nowy zakres.

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

WithOpName

Scope WithOpName(
  Ty... fragments
) const 

Zwróć nowy zakres.

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

Z klastrem XlaCluster

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 .

zależności_kontroli

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

wykres

Graph * graph() const 

wykres_jako_współdzielony_punkt

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

NewRootScope

Scope NewRootScope()

Zwróć nowy zakres.

Tworzy to nowy graf i wszystkie operacje konstruowane na tym grafie powinny używać zwróconego obiektu jako zakresu „głównego”.