tensorflow::Portée

#include <scope.h>

Un objet Scope représente un ensemble d'opérations TensorFlow liées qui possèdent 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 des opérations TensorFlow. Les constructeurs d'opérations reçoivent un objet Scope comme premier argument obligatoire, et l'opération construite hérite des propriétés de cet 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 propose différentes fonctions With<> permettant de créer une nouvelle portée. Généralement, une seule propriété de cette nouvelle portée est modifiée, tandis que les autres sont héritées de la portée parente. La méthode NewSubScope(name) ajoute name au préfixe des noms des opérations créées dans cette portée, et WithOpName() modifie le suffixe, qui correspond par défaut au 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 :

Un nouveau scope est créé en appelant `Scope::NewRootScope` . Cela crée des ressources partagées par tous les scopes enfants qui héritent de ce scope, directement ou transitivement. Par exemple, un nouveau scope crée un nouvel objet `Graph` auquel les opérations sont ajoutées lorsque ce nouveau scope ou ses enfants sont utilisés par un constructeur `Op`. Le nouveau scope possède également un objet `Status` qui sert à signaler les erreurs aux fonctions de construction `Op` appelées sur n'importe quel scope enfant. Les fonctions de construction `Op` doivent vérifier l'état du scope 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 les fonctions constructeurs d'opérations sur le même objet Scope .

Constructeurs et destructeurs

Scope (const Scope & other)
~Scope ()

fonctions publiques

ClearColocation () const
Supprimer toutes les contraintes de colocalisation.
ColocateWith (const Operation & op) const
Retourner une nouvelle portée.
ColocateWith (const Output & out) const
Fonction pratique pour ce qui précède.
ExitOnError () const
Retourner 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
Retourner 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 de ce périmètre.
WithAssignedDevice (const string & assigned_device) const
Renvoie une nouvelle portée.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Retourner une nouvelle portée.
WithControlDependencies (const Output & control_dep) const
Identique à ce qui précède, mais pratique pour ajouter une dépendance de contrôle sur l'opération produisant la sortie control_dep.
WithDevice (const string & device) const
Retourner une nouvelle portée.
WithKernelLabel (const string & kernel_label) const
Retourner une nouvelle portée.
WithNoControlDependencies () const
Retourner une nouvelle portée.
WithOpName (Ty... fragments) const
Retourner 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 ()
Retourner une nouvelle portée.

fonctions publiques

ClearColocation

Scope ClearColocation() const 

Supprimer toutes les contraintes de colocalisation.

ColocateWith

Scope ColocateWith(
  const Operation & op
) const 

Retourner une nouvelle portée.

Toutes les opérations créées dans le périmètre renvoyé seront exécutées sur le même périphérique que l'opération. REMARQUE : Cette fonction est destinée à un usage interne, via des bibliothèques, pour contrôler l'exécution des opérations sur les périphériques. Son utilisation publique est déconseillée, car le comportement de cette fonction est susceptible d'évoluer.

ColocateWith

Scope ColocateWith(
  const Output & out
) const 

Fonction pratique pour ce qui précède.

Sortie en cas d'erreur

Scope ExitOnError() const 

Retourner une nouvelle portée.

Les fonctions de construction d'op prenant la portée renvoyée comme argument de portée s'arrêteront dès qu'une erreur sera détectée, au lieu de définir l'état de la portée.

ObtenirCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

ObtenirNomUniquePourOp

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

Nouvelle sous-portée

Scope NewSubScope(
  const string & child_scope_name
) const 

Retourner une nouvelle portée.

Les opérations créées avec cette portée auront pour préfixe name/child_scope_name . Le nom proprement dit 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 omis.

Portée

 Scope(
  const Scope & other
)

ToGraphDef

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 le statut d'erreur tel quel sans effectuer de conversion GraphDef.

Mise à jour du statut

void UpdateStatus(
  const Status & s
) const 

Mettre à jour le statut de ce périmètre.

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 portée, cette fonction se termine en appelant LOG(FATAL).

Avec l'appareil attribué

Scope WithAssignedDevice(
  const string & assigned_device
) const 

Renvoie une nouvelle portée.

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

Avec les dépendances de contrôle

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

Retourner 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 du vecteur control_deps et des dépendances de contrôle de la portée actuelle.

Avec les dépendances de contrôle

Scope WithControlDependencies(
  const Output & control_dep
) const 

Identique à ce qui précède, mais pratique pour ajouter une dépendance de contrôle sur l'opération produisant la sortie control_dep.

Avec l'appareil

Scope WithDevice(
  const string & device
) const 

Retourner une nouvelle portée.

Toutes les opérations créées dans le périmètre renvoyé auront le champ « device » défini sur « device ».

Avec étiquette de noyau

Scope WithKernelLabel(
  const string & kernel_label
) const 

Retourner une nouvelle portée.

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

Sans dépendances de contrôle

Scope WithNoControlDependencies() const 

Retourner une nouvelle portée.

Toutes les opérations créées dans le périmètre renvoyé n'auront aucune dépendance de contrôle vis-à-vis d'autres opérations.

AvecOpName

Scope WithOpName(
  Ty... fragments
) const 

Retourner 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_dépendances

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

Retourner une nouvelle portée.

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