flux tenseur :: Portée

#include <scope.h>

Un objet Scope représente un ensemble d'opérations TensorFlow associées qui ont les mêmes propriétés, comme un préfixe de nom commun.

Sommaire

Un objet Scope est un conteneur pour les propriétés TensorFlow Op. Les constructeurs d'op obtiennent un objet Scope comme premier argument obligatoire et l'op construit acquiert les propriétés de l'objet.

Un exemple simple :

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()) { ... }

Hiérarchie de la portée :

La classe Scope fournit diverses fonctions With<> qui créent une nouvelle portée. La nouvelle étendue a généralement une propriété modifiée tandis que d'autres propriétés sont héritées de l'étendue parente. La méthode NewSubScope(name) ajoute name au préfixe des noms pour les opérations créées dans la portée, et WithOpName() modifie le suffixe qui, autrement, prend par défaut le type de l'opération.

Exemples de noms :

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"

Durée de vie de la portée :

Une nouvelle portée est créée en appelant Scope::NewRootScope . Cela crée des ressources qui sont partagées par toutes les étendues enfants qui héritent de cette étendue, directement ou transitivement. Par exemple, une nouvelle portée crée un nouvel objet Graph auquel des opérations sont ajoutées lorsque la nouvelle portée ou ses enfants sont utilisés par un constructeur Op. La nouvelle portée a également un objet Status qui sera utilisé pour indiquer les erreurs par les fonctions du constructeur Op appelées sur n'importe quelle portée enfant. Les fonctions Op-constructor doivent vérifier l'état de la portée en appelant la méthode ok() avant de procéder à la construction de l'op.

Sécurité des fils :

Un objet Scope n'est PAS thread-safe. Les threads ne peuvent pas appeler simultanément des fonctions op-constructor sur le même objet Scope .

Constructeurs et destructeurs

Scope (const Scope & other)
~Scope ()

Fonctions publiques

ClearColocation () const
Supprimez toutes les contraintes de colocation.
ColocateWith (const Operation & op) const
Retourne une nouvelle portée.
ColocateWith (const Output & out) const
Fonction de commodité pour ci-dessus.
ExitOnError () const
Retourne une nouvelle portée.
GetCompositeOpScopes (const string & composite_op_name) const
GetUniqueNameForOp (const string & default_name) const
string
Renvoie un nom unique, en utilisant default_name si un nom d'opération n'a pas été spécifié.
NewSubScope (const string & child_scope_name) const
Retourne une nouvelle portée.
ToGraphDef (GraphDef *gdef) const
Si status() est Status::OK(), convertissez l'objet Graph stocké dans cette portée en un proto GraphDef et renvoyez Status::OK().
UpdateStatus (const Status s) const
void
Mettre à jour le statut sur cette portée.
WithAssignedDevice (const string & assigned_device) const
Retourne une nouvelle portée.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Retourne une nouvelle étendue.
WithControlDependencies (const Output & control_dep) const
Comme ci-dessus, mais pratique pour ajouter une dépendance de contrôle sur l'opération produisant la sortie control_dep.
WithDevice (const string & device) const
Retourne une nouvelle étendue.
WithKernelLabel (const string & kernel_label) const
Retourne une nouvelle étendue.
WithNoControlDependencies () const
Retourne une nouvelle étendue.
WithOpName (Ty... fragments) const
Retourne une nouvelle étendue.
WithXlaCluster (const string & xla_cluster) const
Retourne une nouvelle étendue.
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

Fonctions statiques publiques

NewRootScope ()
Retourne une nouvelle étendue.

Fonctions publiques

ClearColocation

Scope ClearColocation() const 

Supprimez toutes les contraintes de colocation.

ColocaliserAvec

Scope ColocateWith(
  const Operation & op
) const 

Retourne une nouvelle portée.

Toutes les opérations créées dans la portée renvoyée seront colocalisées sur l'appareil où l'opération est placée. REMARQUE : Cette fonction est destinée à être utilisée uniquement dans les bibliothèques internes pour contrôler le placement des opérations sur les périphériques. L'utilisation publique n'est pas encouragée car la mise en œuvre du placement des appareils est sujette à modification.

ColocaliserAvec

Scope ColocateWith(
  const Output & out
) const 

Fonction de commodité pour ci-dessus.

Sortie sur erreur

Scope ExitOnError() const 

Retourne une nouvelle portée.

Les fonctions op-constructor prenant la portée retournée comme argument de portée se termineront dès qu'une erreur sera détectée, au lieu de définir le statut sur la portée.

GetCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

Renvoie un nom unique, en utilisant default_name si un nom d'opération n'a pas été spécifié.

NewSubScope

Scope NewSubScope(
  const string & child_scope_name
) const 

Retourne une nouvelle portée.

Les opérations créées avec cette portée auront le name/child_scope_name comme préfixe. Le nom réel sera unique dans la portée actuelle. Toutes les autres propriétés sont héritées de la portée actuelle. Si child_scope_name est vide, le / est élidé.

Portée

 Scope(
  const Scope & other
)

VersDéfGraph

Status ToGraphDef(
  GraphDef *gdef
) const 

Si status() est Status::OK(), convertissez l'objet Graph stocké dans cette portée en un proto GraphDef et renvoyez Status::OK().

Sinon, renvoyez l'état d'erreur tel quel sans effectuer de conversion GraphDef.

État de mise à jour

void UpdateStatus(
  const Status s
) const 

Mettre à jour le statut sur cette portée.

Remarque : L'objet d'état est partagé entre tous les enfants de cette étendue. Si le statut résultant n'est pas Status::OK() et que exit_on_error_ est défini sur cette portée, cette fonction se termine en appelant LOG(FATAL).

Avecdispositifassigné

Scope WithAssignedDevice(
  const string & assigned_device
) const 

Retourne une nouvelle étendue.

Toutes les opérations créées dans la portée renvoyée auront leur appareil assigné défini assigned_device .

WithControlDependencies

Scope WithControlDependencies(
  const gtl::ArraySlice< Operation > & control_deps
) const 

Retourne une nouvelle étendue.

Toutes les opérations créées dans la portée renvoyée auront comme dépendances de contrôle l'union des opérations dans le vecteur control_deps et les dépendances de contrôle de la portée actuelle.

WithControlDependencies

Scope WithControlDependencies(
  const Output & control_dep
) const 

Comme ci-dessus, mais pratique pour ajouter une dépendance de contrôle sur l'opération produisant la sortie control_dep.

AvecAppareil

Scope WithDevice(
  const string & device
) const 

Retourne une nouvelle portée.

Toutes les opérations créées dans la portée renvoyée auront le champ de périphérique défini sur « device ».

WithKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Retourne une nouvelle étendue.

Toutes les opérations créées avec la nouvelle portée auront kernel_label comme valeur pour leur attribut '_kernel' ;

WithNoControlDependencies

Scope WithNoControlDependencies() const 

Retourne une nouvelle portée.

Toutes les opérations créées dans la portée renvoyée n'auront aucune dépendance de contrôle sur d'autres opérations.

AvecOpName

Scope WithOpName(
  Ty... fragments
) const 

Retourne une nouvelle étendue.

Toutes les opérations créées dans la portée renvoyée auront des noms de la forme name/StrCat(fragments...)[_suffix]

AvecXlaCluster

Scope WithXlaCluster(
  const string & xla_cluster
) const 

Retourne une nouvelle étendue.

Toutes les opérations créées dans la portée renvoyée auront leur attribut _XlaCluster défini sur xla_cluster .

control_deps

const std::vector< Operation > & control_deps() const 

graphique

Graph * graph() const 

graph_as_shared_ptr

std::shared_ptr< Graph > graph_as_shared_ptr() const 

d'accord

bool ok() const 

opérateur=

Scope & operator=(
  const Scope & other
)

statut

Status status() const 

~ Portée

 ~Scope()

Fonctions statiques publiques

NewRootScope

Scope NewRootScope()

Retourne une nouvelle étendue.

Cela crée un nouveau graphique et toutes les opérations construites dans ce graphique doivent utiliser l'objet renvoyé comme portée "racine".