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 étendue. |
ColocateWith (const Output & out) const | Fonction de commodité pour ci-dessus. |
ExitOnError () const | Retourne une nouvelle étendue. |
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 étendue. |
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 étendue. |
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 portée. |
WithKernelLabel (const string & kernel_label) const | Retourne une nouvelle portée. |
WithNoControlDependencies () const | Retourne une nouvelle portée. |
WithOpName (Ty... fragments) const | Retourne une nouvelle portée. |
WithXlaCluster (const string & xla_cluster) const | Retourne 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 () | Retourne une nouvelle étendue. |
Fonctions publiques
ColocaliserAvec
Scope ColocateWith( const Operation & op ) const
Retourne une nouvelle étendue.
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 étendue.
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 étendue.
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 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.
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 étendue.
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 portée.
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
statut
Status status() const
~ Portée
~Scope()
Fonctions statiques publiques
NewRootScope
Scope NewRootScope()
Retourne 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".