flux tensoriel : : 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, telles qu'un préfixe de nom commun.

Résumé

Un objet Scope est un conteneur pour les propriétés TensorFlow Op. Les constructeurs d'opérations obtiennent un objet Scope comme premier argument obligatoire et l'opération construite 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 portée :

La classe Scope fournit diverses fonctions With<> qui créent une nouvelle portée. La nouvelle portée a généralement une propriété modifiée tandis que les autres propriétés sont héritées de la portée parent. La méthode NewSubScope(name) ajoute name au préfixe des noms des opérations créées dans la portée, et WithOpName() modifie le suffixe qui autrement est 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 partagées par toutes les étendues enfants qui héritent de cette étendue, directement ou de manière transitive. 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 dispose également d'un objet Status qui sera utilisé pour indiquer les erreurs par les fonctions Op-constructor appelées sur n'importe quelle portée enfant. Les fonctions du constructeur Op doivent vérifier l'état de la portée en appelant la méthode ok() avant de procéder à la construction de l'opération.

Sécurité du fil :

Un objet Scope n’est PAS thread-safe. Les threads ne peuvent pas appeler simultanément des fonctions de constructeur opérationnel 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
Renvoie une nouvelle portée.
ColocateWith (const Output & out) const
Fonction pratique pour ci-dessus.
ExitOnError () const
Renvoie 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 aucun nom d'opération n'a été spécifié.
NewSubScope (const string & child_scope_name) const
Renvoie 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
Mettez à jour le statut sur cette étendue.
WithAssignedDevice (const string & assigned_device) const
Renvoie une nouvelle portée.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Renvoie une nouvelle portée.
WithControlDependencies (const Output & control_dep) const
Identique à 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
Renvoie une nouvelle portée.
WithKernelLabel (const string & kernel_label) const
Renvoie une nouvelle portée.
WithNoControlDependencies () const
Renvoie une nouvelle portée.
WithOpName (Ty... fragments) const
Renvoie une nouvelle portée.
WithXlaCluster (const string & xla_cluster) const
Renvoie une nouvelle portée.
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 ()
Renvoie une nouvelle portée.

Fonctions publiques

EffacerColocation

Scope ClearColocation() const 

Supprimez toutes les contraintes de colocation.

ColocaliserAvec

Scope ColocateWith(
  const Operation & op
) const 

Renvoie une nouvelle portée.

Toutes les opérations créées dans la portée renvoyée seront colocalisées sur l'appareil sur lequel l'opération est placée. REMARQUE : Cette fonction est destinée à utiliser des bibliothèques internes uniquement pour contrôler le placement des opérations sur les appareils. L'utilisation publique n'est pas encouragée car la mise en œuvre du placement des appareils est susceptible de changer.

ColocaliserAvec

Scope ColocateWith(
  const Output & out
) const 

Fonction pratique pour ci-dessus.

Sortie sur erreur

Scope ExitOnError() const 

Renvoie une nouvelle portée.

Les fonctions du constructeur op prenant la portée renvoyée comme argument de portée se termineront dès qu'une erreur est détectée, au lieu de définir l'état de la portée.

ObtenirCompositeOpScopes

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 aucun nom d'opération n'a été spécifié.

NouveauSous-Portée

Scope NewSubScope(
  const string & child_scope_name
) const 

Renvoie une nouvelle portée.

Les opérations créées avec cette étendue auront 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 supprimé.

Portée

 Scope(
  const Scope & other
)

VersGraphDef

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 

Mettez à jour le statut sur cette étendue.

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

AvecAssignedDevice

Scope WithAssignedDevice(
  const string & assigned_device
) const 

Renvoie une nouvelle portée.

Toutes les opérations créées dans la portée renvoyée verront leur périphérique attribué défini sur assigned_device .

AvecDépendancesContrôle

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

Renvoie une nouvelle portée.

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.

AvecDépendancesContrôle

Scope WithControlDependencies(
  const Output & control_dep
) const 

Identique à 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 

Renvoie 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 « périphérique ».

AvecKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Renvoie une nouvelle portée.

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

WithNoControlDependencies

Scope WithNoControlDependencies() const 

Renvoie 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 

Renvoie une nouvelle portée.

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 

Renvoie une nouvelle portée.

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

contrôle_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

NouveauRootScope

Scope NewRootScope()

Renvoie une nouvelle portée.

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