tensoreflusso:: Scopo

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

Funzioni pubbliche statiche

NewRootScope ()
Restituisce un nuovo ambito.

Funzioni pubbliche

CancellaColocation

Scope ClearColocation() const 

Cancella tutti i vincoli di colocation.

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.

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

Funzione comodità per quanto sopra.

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.

Scopo

 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.

Aggiorna stato

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 

operatore=

Scope & operator=(
  const Scope & other
)

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