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)
status () const

Funzioni statiche pubbliche

NewRootScope ()
Restituisci un nuovo oscilloscopio.

Funzioni pubbliche

ClearColocation

Scope ClearColocation() const 

Rimuovi tutti i vincoli di colocation.

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.

Collocare con

Scope ColocateWith(
  const Output & out
) const 

Funzione di comodità per quanto sopra.

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 

operatore=

Scope & operator=(
  const Scope & other
)

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".