tensorflow:: Scope
#include <scope.h> Un oggetto Scope rappresenta un insieme di operazioni TensorFlow correlate che condividono le stesse proprietà, come ad esempio un prefisso di nome comune.
Riepilogo
Un oggetto Scope è un contenitore per le proprietà delle operazioni TensorFlow. I costruttori di operazioni ricevono un oggetto Scope come primo argomento obbligatorio e l'operazione costruita acquisisce le proprietà contenute nell'oggetto.
Un semplice esempio:
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()) { ... }
Gerarchia dell'ambito :
La classe Scope fornisce diverse funzioni With<> che creano un nuovo ambito. Il nuovo ambito in genere ha una proprietà modificata, mentre le altre proprietà vengono ereditate dall'ambito padre. Il metodo NewSubScope(name) aggiunge name al prefisso dei nomi delle operazioni create all'interno dell'ambito, e WithOpName() modifica il suffisso che altrimenti assume per impostazione predefinita il tipo di operazione.
Esempi di nomi:
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"
Durata di validità dell'ambito :
Un nuovo ambito viene creato chiamando Scope::NewRootScope . Questo crea alcune risorse che vengono condivise da tutti gli ambiti figli che ereditano da questo ambito, direttamente o indirettamente. Ad esempio, un nuovo ambito crea un nuovo oggetto Graph a cui vengono aggiunte le operazioni quando il nuovo ambito o i suoi figli vengono utilizzati da un costruttore Op. Il nuovo ambito ha anche un oggetto Status che verrà utilizzato per indicare gli errori dalle funzioni del costruttore Op chiamate su qualsiasi ambito figlio. Le funzioni del costruttore Op devono controllare lo stato dell'ambito chiamando il metodo ok() prima di procedere alla costruzione dell'operazione.
Sicurezza delle filettature:
Un oggetto Scope NON è thread-safe. I thread non possono chiamare contemporaneamente le funzioni del costruttore di operazioni sullo stesso oggetto Scope .
Costruttori e distruttori | |
|---|---|
Scope (const Scope & other) | |
~Scope () |
Funzioni pubbliche | |
|---|---|
ClearColocation () const | Rimuovi tutti i vincoli di colocation. |
ColocateWith (const Operation & op) const | Restituisci un nuovo oscilloscopio. |
ColocateWith (const Output & out) const | Funzione di comodità per quanto sopra. |
ExitOnError () const | Restituisci un nuovo oscilloscopio. |
GetCompositeOpScopes (const string & composite_op_name) const | |
GetUniqueNameForOp (const string & default_name) const | string Restituisce un nome univoco, utilizzando default_name se non è stato specificato un nome per l'operatore. |
NewSubScope (const string & child_scope_name) const | Restituisci un nuovo oscilloscopio. |
ToGraphDef (GraphDef *gdef) const | Se status() è Status::OK(), converti l'oggetto Graph memorizzato in questo ambito in un proto GraphDef e restituisci Status::OK(). |
UpdateStatus (const Status & s) const | void Aggiorna lo stato di questo ambito. |
WithAssignedDevice (const string & assigned_device) const | Restituisce un nuovo ambito. |
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const | Restituisci un nuovo oscilloscopio. |
WithControlDependencies (const Output & control_dep) const | Come sopra, ma è comodo aggiungere la dipendenza di controllo all'operazione che produce l'output control_dep. |
WithDevice (const string & device) const | Restituisci un nuovo oscilloscopio. |
WithKernelLabel (const string & kernel_label) const | Restituisci un nuovo oscilloscopio. |
WithNoControlDependencies () const | Restituisci un nuovo oscilloscopio. |
WithOpName (Ty... fragments) const | Restituisci un nuovo oscilloscopio. |
WithXlaCluster (const string & xla_cluster) const | Restituisce un nuovo ambito. |
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 | |
Funzioni statiche pubbliche | |
|---|---|
NewRootScope () | Restituisci un nuovo oscilloscopio. |
Funzioni pubbliche
Collocare con
Scope ColocateWith( const Operation & op ) const
Restituisci un nuovo oscilloscopio.
Tutte le operazioni create all'interno dell'ambito restituito saranno collocate sul dispositivo in cui l'operazione è posizionata. NOTA: questa funzione è destinata all'uso interno delle librerie per il controllo del posizionamento delle operazioni sui dispositivi. L'uso pubblico non è incoraggiato poiché l'implementazione del posizionamento sui dispositivi è soggetta a modifiche.
Uscita in caso di errore
Scope ExitOnError() const
Restituisci un nuovo oscilloscopio.
Le funzioni op-constructor che prendono lo scope restituito come argomento scope termineranno non appena viene rilevato un errore, invece di impostare lo stato sullo scope.
OttieniOtticiCompositi
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
OttieniNomeUnicoPerOp
string GetUniqueNameForOp( const string & default_name ) const
Restituisce un nome univoco, utilizzando default_name se non è stato specificato un nome per l'operatore.
Nuovo sotto-ambito
Scope NewSubScope( const string & child_scope_name ) const
Restituisci un nuovo oscilloscopio.
Le operazioni create con questo ambito avranno come prefisso name/child_scope_name . Il nome effettivo sarà univoco nell'ambito corrente. Tutte le altre proprietà vengono ereditate dall'ambito corrente. Se child_scope_name è vuoto, la barra / viene omessa.
Ambito di applicazione
Scope( const Scope & other )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
Se status() è Status::OK(), converti l'oggetto Graph memorizzato in questo ambito in un proto GraphDef e restituisci Status::OK().
Altrimenti, restituisci lo stato di errore così com'è, senza eseguire la conversione GraphDef.
Stato dell'aggiornamento
void UpdateStatus( const Status & s ) const
Aggiorna lo stato di questo ambito.
Nota: l'oggetto status è condiviso tra tutti i figli di questo ambito. Se lo stato risultante non è Status::OK() e exit_on_error_ è impostato su questo ambito, questa funzione termina chiamando LOG(FATAL).
ConDispositivoAssegnato
Scope WithAssignedDevice( const string & assigned_device ) const
Restituisce un nuovo ambito.
Tutte le operazioni create all'interno dell'ambito restituito avranno il dispositivo assegnato impostato su assigned_device .
Con ControlDependencies
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Restituisci un nuovo oscilloscopio.
Tutte le operazioni create all'interno dell'ambito restituito avranno come dipendenze di controllo l'unione delle operazioni nel vettore control_deps e le dipendenze di controllo dell'ambito corrente.
Con ControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
Come sopra, ma è comodo aggiungere la dipendenza di controllo all'operazione che produce l'output control_dep.
Con dispositivo
Scope WithDevice( const string & device ) const
Restituisci un nuovo oscilloscopio.
Tutte le operazioni create all'interno dell'ambito restituito avranno il campo dispositivo impostato su 'device'.
Con etichetta kernel
Scope WithKernelLabel( const string & kernel_label ) const
Restituisci un nuovo oscilloscopio.
Tutte le operazioni create con il nuovo ambito avranno kernel_label come valore per il loro attributo '_kernel';
Senza dipendenze di controllo
Scope WithNoControlDependencies() const
Restituisci un nuovo oscilloscopio.
Tutte le operazioni create all'interno dell'ambito restituito non avranno dipendenze di controllo da altre operazioni.
Con nome utente
Scope WithOpName( Ty... fragments ) const
Restituisci un nuovo oscilloscopio.
Tutte le operazioni create all'interno dell'ambito restituito avranno nomi del tipo name/StrCat(fragments...)[_suffix]
Con XlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
Restituisce un nuovo ambito.
Tutte le operazioni create all'interno dell'ambito restituito avranno il loro attributo _XlaCluster impostato su xla_cluster .
dipendenze di controllo
const std::vector< Operation > & control_deps() const
grafico
Graph * graph() const
grafico_come_punto_condiviso
std::shared_ptr< Graph > graph_as_shared_ptr() const
OK
bool ok() const
stato
Status status() const
~Ambito
~Scope()
Funzioni statiche pubbliche
NewRootScope
Scope NewRootScope()
Restituisci un nuovo oscilloscopio.
Questo crea un nuovo grafo e tutte le operazioni costruite in questo grafo dovrebbero utilizzare l'oggetto restituito come ambito "radice".