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) | Scope & |
status () const | |
Publiczne funkcje statyczne | |
|---|---|
NewRootScope () | Zwróć nowy zakres. |
Funkcje publiczne
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
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”.