tensorflow :: Scopo
#include <scope.h>
Un oggetto Scope
rappresenta un insieme di operazioni TensorFlow correlate che hanno le stesse proprietà come un prefisso di nome comune.
Sommario
Un oggetto Scope è un contenitore per le proprietà TensorFlow Op. I costruttori op ottengono un oggetto Scope come primo argomento obbligatorio e l'op costruito 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. Il nuovo ambito in genere ha una proprietà modificata mentre altre proprietà vengono ereditate dall'ambito padre. Il metodo NewSubScope (name) aggiunge il name
al prefisso dei nomi per le operazioni create nell'ambito e WithOpName () cambia il suffisso che altrimenti viene impostato per impostazione predefinita sul tipo di op.
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 in modo transitorio. Ad esempio, un nuovo ambito crea un nuovo oggetto Graph a cui vengono aggiunte le operazioni quando il nuovo ambito oi 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 Op-costruttore chiamate su qualsiasi ambito figlio. Le funzioni Op-constructor devono controllare 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 op-costruttore 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 convenienza per 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 nome_predefinito 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 (), 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 su 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 comodo per 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 statiche pubbliche | |
---|---|
NewRootScope () | Restituisce un nuovo ambito. |
Funzioni pubbliche
ColocateWith
Scope ColocateWith( const Operation & op ) const
Restituisce un nuovo ambito.
Tutte le operazioni create all'interno dell'ambito restituito saranno collocate nel dispositivo in cui è collocata l'operazione. NOTA: questa funzione deve essere utilizzata solo per le librerie interne per controllare il posizionamento degli operatori sui dispositivi. L'uso pubblico non è incoraggiato perché l'implementazione del posizionamento del dispositivo è soggetta a modifiche.
ExitOnError
Scope ExitOnError() const
Restituisce un nuovo ambito.
Le funzioni op-costruttore che prendono l'ambito restituito come argomento dell'ambito usciranno non appena viene rilevato un errore, invece di impostare lo stato sull'ambito.
GetCompositeOpScopes
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
GetUniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
Restituisce un nome univoco, utilizzando nome_predefinito 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 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, /
è eliso.
Scopo
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 ().
In caso contrario, restituire lo stato di errore così com'è senza eseguire la conversione GraphDef.
Aggiorna stato
void UpdateStatus( const Status & s ) const
Aggiorna lo stato su questo ambito.
Nota: l'oggetto status è condiviso tra tutti gli elementi secondari di questo ambito. Se lo stato risultante non è Status :: OK () e exit_on_error_ è impostato su questo ambito, questa funzione esce chiamando LOG (FATAL).
WithAssignedDevice
Scope WithAssignedDevice( const string & assigned_device ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito avranno il dispositivo assegnato impostato su assigned_device
.
WithControlDependencies
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.
WithControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
Come sopra, ma comodo per aggiungere la dipendenza del controllo dall'operazione che produce l'output control_dep.
WithDevice
Scope WithDevice( const string & device ) const
Restituisce un nuovo ambito.
Tutte le operazioni create nell'ambito restituito avranno il campo dispositivo impostato su "dispositivo".
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
Restituisce un nuovo ambito.
Tutte le operazioni create con il nuovo scope 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.
WithOpName
Scope WithOpName( Ty... fragments ) const
Restituisce un nuovo ambito.
Tutte le operazioni create all'interno dell'ambito restituito avranno nomi nel formato name/StrCat(fragments...)[_suffix]
WithXlaCluster
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 statiche pubbliche
NewRootScope
Scope NewRootScope()
Restituisce un nuovo ambito.
Questo crea un nuovo grafico e tutte le operazioni costruite in questo grafico dovrebbero usare l'oggetto restituito come ambito "root".