tensorflow :: Zakres
#include <scope.h>
Obiekt Scope
reprezentuje zestaw powiązanych operacji TensorFlow, które mają takie same właściwości, jak prefiks nazwy pospolitej.
Podsumowanie
Obiekt Scope jest kontenerem dla właściwości TensorFlow Op. Konstruktory op pobierają obiekt Scope jako obowiązkowy pierwszy argument, a skonstruowana operacja 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()) { ... }
Zakres hierarchia:
Klasa Scope udostępnia różne funkcje 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. Metoda NewSubScope (name) dołącza name
do przedrostka 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 . Tworzy to niektóre zasoby, które są współużytkowane przez wszystkie zakresy podrzędne, które dziedziczą z tego zakresu, bezpośrednio lub przejściowo. Na przykład nowy zakres tworzy nowy obiekt Graph, do którego są dodawane operacje, gdy nowy zakres lub jego elementy podrzędne są używane przez konstruktora Op. Nowy zakres ma 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ć stan zakresu przez wywołanie metody ok () przed przystąpieniem do konstruowania op.
Bezpieczeństwo wątków:
Obiekt Scope
NIE jest bezpieczny dla wątków. Wątki nie mogą jednocześnie wywoływać funkcji konstruktora op dla tego samego obiektu Scope
.
Konstruktorzy i niszczyciele | |
---|---|
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 powyżej. |
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 op nie została określona. |
NewSubScope (const string & child_scope_name) const | Zwróć nowy zakres. |
ToGraphDef (GraphDef *gdef) const | Status Jeśli status () to Status :: OK (), przekonwertuj obiekt Graph przechowywany w tym zakresie na protokół 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 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 | Status |
Publiczne funkcje statyczne | |
---|---|
NewRootScope () | Zwróć nowy zakres. |
Funkcje publiczne
ColocateWith
Scope ColocateWith( const Operation & op ) const
Zwróć nowy zakres.
Wszystkie operacje utworzone w zwróconym zakresie zostaną umieszczone razem na urządzeniu, na którym znajduje się op. UWAGA: Ta funkcja jest przeznaczona do używania wewnętrznych bibliotek tylko do kontrolowania umieszczania opcji na urządzeniach. Nie zaleca się użytku publicznego, ponieważ sposób umieszczania urządzeń może ulec zmianie.
ExitOnError
Scope ExitOnError() const
Zwróć nowy zakres.
Funkcje konstruktora op, które przyjmują zwrócony zakres jako argument zasięgu, zakończą działanie, gdy tylko zostanie wykryty błąd, zamiast ustawiać stan 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 op nie została określona.
NewSubScope
Scope NewSubScope( const string & child_scope_name ) const
Zwróć nowy zakres.
Operacje utworzone w tym zakresie będą miały przedrostek 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 puste, /
jest pomijane.
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 protokół GraphDef i zwróć Status :: OK ().
W przeciwnym razie zwróć stan błędu bez wykonywania konwersji GraphDef.
Stan aktualizacji
void UpdateStatus( const Status & s ) const
Zaktualizuj stan tego zakresu.
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 ustawiony w tym zakresie, ta funkcja kończy działanie przez wywołanie LOG (FATAL).
WithAssignedDevice
Scope WithAssignedDevice( const string & assigned_device ) const
Zwraca nowy zakres.
Wszystkie operacje utworzone w ramach zwróconego zakresu będą miały przypisane urządzenie ustawione na assigned_device
urządzenie.
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
Tak samo jak powyżej, ale wygodnie jest dodać zależność sterowania od operacji generującej dane wyjściowe control_dep.
WithDevice
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”.
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
Zwróć nowy zakres.
Wszystkie operacje utworzone z nowym zakresem będą miały etykietę kernel_label jako wartość atrybutu „_kernel”;
WithNoControlDependencies
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.
WithOpName
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]
WithXlaCluster
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
status
Status status() const
~ Zakres
~Scope()
Publiczne funkcje statyczne
NewRootScope
Scope NewRootScope()
Zwróć nowy zakres.
Spowoduje to utworzenie nowego wykresu i wszystkie operacje konstruowane na tym wykresie powinny używać zwróconego obiektu jako zakresu „głównego”.