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) | Scope & |
status () const |
Fonctions statiques publiques | |
---|---|
NewRootScope () | Renvoie une nouvelle portée. |
Fonctions publiques
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.
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.
Mettre à jour le statut
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
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 ».