tensoreflusso:: Ambito
#include <scope.h>
Un oggetto Scope
rappresenta un insieme di operazioni TensorFlow correlate che hanno le stesse proprietà come un prefisso del nome comune.
Riepilogo
Un oggetto Scope è un contenitore per le proprietà TensorFlow Op. I costruttori op ottengono un oggetto Scope come primo argomento obbligatorio e l'operazione costruita acquisisce le proprietà 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 varie funzioni With<> che creano un nuovo ambito. Nel nuovo ambito in genere viene modificata una proprietà mentre le altre proprietà vengono ereditate dall'ambito padre. Il metodo NewSubScope(name) aggiunge name
al prefisso dei nomi per le operazioni create nell'ambito e WithOpName() modifica il suffisso che altrimenti viene impostato automaticamente sul tipo dell'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 dell'ambito:
Viene creato un nuovo ambito chiamando Scope::NewRootScope . Ciò crea alcune risorse condivise da tutti gli ambiti figlio che ereditano da questo ambito, direttamente o transitivamente. 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 delle funzioni del costruttore Op richiamate su qualsiasi ambito figlio. Le funzioni del costruttore Op devono verificare lo stato dell'ambito chiamando il metodo ok() prima di procedere con la costruzione dell'op.
Sicurezza del filo:
Un oggetto Scope
NON è thread-safe. I thread non possono chiamare contemporaneamente funzioni del costruttore operativo sullo stesso oggetto Scope
.
Costruttori e distruttori | |
---|---|
Scope (const Scope & other) | |
~Scope () |
Funzioni pubbliche | |
---|---|
ClearColocation () const | Cancella tutti i vincoli di colocation. |
ColocateWith (const Operation & op) const | Restituisce un nuovo ambito. |
ColocateWith (const Output & out) const | Funzione comodità per quanto sopra. |
ExitOnError () const | Restituisce un nuovo ambito. |
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 operativo. |
NewSubScope (const string & child_scope_name) const | Restituisce un nuovo ambito. |
ToGraphDef (GraphDef *gdef) const | Se status() è Status::OK(), converte l'oggetto Graph memorizzato in questo ambito in un protocollo GraphDef e restituisce 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 | Restituisce un nuovo ambito. |
WithControlDependencies (const Output & control_dep) const | Come sopra, ma è conveniente aggiungere la dipendenza del controllo dall'operazione che produce l'output control_dep. |
WithDevice (const string & device) const | Restituisce un nuovo ambito. |
WithKernelLabel (const string & kernel_label) const | Restituisce un nuovo ambito. |
WithNoControlDependencies () const | Restituisce un nuovo ambito. |
WithOpName (Ty... fragments) const | Restituisce un nuovo ambito. |
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 pubbliche statiche | |
---|---|
NewRootScope () | Restituisce un nuovo ambito. |
Funzioni pubbliche
ColocateWith
Scope ColocateWith( const Operation & op ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito verranno collocate nello stesso dispositivo sul quale è posizionata l'operazione. NOTA: questa funzione è destinata all'uso delle librerie interne solo per controllare il posizionamento delle operazioni sui dispositivi. L'uso pubblico non è incoraggiato perché l'implementazione del posizionamento dei dispositivi è soggetta a modifiche.
EscisuErrore
Scope ExitOnError() const
Restituisce un nuovo ambito.
Le funzioni del costruttore operativo che accettano l'ambito restituito come argomento dell'ambito verranno chiuse non appena viene rilevato un errore, invece di impostare lo stato sull'ambito.
Ottieni CompositeOpScopes
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
OttieniNomeUnivocoPerOp
string GetUniqueNameForOp( const string & default_name ) const
Restituisce un nome univoco, utilizzando default_name se non è stato specificato un nome operativo.
NewSubScope
Scope NewSubScope( const string & child_scope_name ) const
Restituisce un nuovo ambito.
Le operazioni create con questo ambito avranno name/child_scope_name
come prefisso. Il nome effettivo sarà univoco nell'ambito corrente. Tutte le altre proprietà vengono ereditate dall'ambito corrente. Se child_scope_name
è vuoto, /
viene eliminato.
Ambito
Scope( const Scope & other )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
Se status() è Status::OK(), converte l'oggetto Graph memorizzato in questo ambito in un protocollo GraphDef e restituisce Status::OK().
Altrimenti, restituisce lo stato di errore così com'è senza eseguire la conversione GraphDef.
AggiornaStato
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).
Condispositivo assegnato
Scope WithAssignedDevice( const string & assigned_device ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito avranno il dispositivo assegnato impostato assigned_device
.
ConControlDependencies
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito avranno come dipendenze di controllo l'unione delle operazioni nel vettore control_deps e le dipendenze di controllo dell'ambito corrente.
ConControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
Come sopra, ma è conveniente aggiungere la dipendenza del controllo dall'operazione che produce l'output control_dep.
Condispositivo
Scope WithDevice( const string & device ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito avranno il campo dispositivo impostato su "dispositivo".
ConKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
Restituisce un nuovo ambito.
Tutte le operazioni create con il nuovo ambito avranno kernel_label come valore per il loro attributo '_kernel';
WithNoControlDependencies
Scope WithNoControlDependencies() const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito non avranno dipendenze di controllo su altre operazioni.
ConOpName
Scope WithOpName( Ty... fragments ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito avranno nomi nel formato name/StrCat(fragments...)[_suffix]
ConXlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito avranno il loro attributo _XlaCluster impostato su xla_cluster
.
control_deps
const std::vector< Operation > & control_deps() const
grafico
Graph * graph() const
graph_as_shared_ptr
std::shared_ptr< Graph > graph_as_shared_ptr() const
OK
bool ok() const
stato
Status status() const
~Ambito
~Scope()
Funzioni pubbliche statiche
NuovoRootScope
Scope NewRootScope()
Restituisce un nuovo ambito.
Ciò crea un nuovo grafico e tutte le operazioni costruite in questo grafico dovrebbero utilizzare l'oggetto restituito come ambito "radice".