Gère les groupes de propriétés associées lors de la création d'opérations Tensorflow, comme un préfixe de nom commun.
Un Scope
est un conteneur pour les propriétés communes appliquées à TensorFlow Ops. Le code utilisateur normal initialise une Scope
et la fournit aux classes de bâtiment Operation. Par exemple:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
Une classe de construction Operation acquiert un Scope et l'utilise pour définir des propriétés sur les opérations Tensorflow sous-jacentes. Par exemple:
// An operator class that adds a constant.
public class Constant {
public static Constant create(Scope scope, ...) {
scope.graph().opBuilder(
"Const", scope.makeOpName("Const"))
.setAttr(...)
.build()
...
}
}
Hiérarchie des portées:
Un Scope
fournit diverses méthodes with()
qui créent une nouvelle étendue. 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 parent.
Un exemple utilisant Constant
implémenté comme précédemment:
Scope root = new Scope(graph);
// The linear subscope will generate names like linear/...
Scope linear = Scope.withSubScope("linear");
// This op name will be "linear/W"
Constant.create(linear.withName("W"), ...);
// This op will be "linear/Const", using the default
// name provided by Constant
Constant.create(linear, ...);
// This op will be "linear/Const_1", using the default
// name provided by Constant and making it unique within
// this scope
Constant.create(linear, ...);
Les objets Scope ne sont pas thread-safe.
Constructeurs publics
Méthodes publiques
OperationBuilder | applyControlDependencies (générateur OperationBuilder ) Ajoute chaque opérande dans controlDependencies en tant qu'entrée de contrôle au générateur fourni. |
ExécutionEnvironnement | env () Renvoie l'environnement d'exécution utilisé par cette étendue. |
Chaîne | makeOpName (chaîne defaultName) Créez un nom unique pour un opérateur, en utilisant une valeur par défaut fournie si nécessaire. |
Portée | withControlDependencies ( Contrôles Iterable < Opérande <? >>) Renvoie une nouvelle portée dans laquelle les opérations ajoutées auront les dépendances de contrôle fournies. |
Portée | withName (chaîne opName) Renvoie une nouvelle portée qui utilise le nom fourni pour un op. |
Portée | withSubScope (chaîne childScopeName) Renvoie une nouvelle portée dans laquelle les opérations ajoutées auront le préfixe de nom fourni. |
Méthodes héritées
Constructeurs publics
Portée publique ( ExecutionEnvironment env)
Créez une nouvelle étendue de niveau supérieur.
Paramètres
env | L'environnement d'exécution utilisé par l'étendue. |
---|
Méthodes publiques
public OperationBuilder applyControlDependencies (générateur OperationBuilder )
Ajoute chaque opérande dans controlDependencies en tant qu'entrée de contrôle au générateur fourni.
Paramètres
constructeur | OperationBuilder pour ajouter des entrées de contrôle à |
---|
public String makeOpName (String defaultName)
Créez un nom unique pour un opérateur, en utilisant une valeur par défaut fournie si nécessaire.
Ceci est normalement appelé uniquement par les classes de construction d'opérateurs.
Cette méthode génère un nom unique, approprié pour la portée du nom contrôlée par cette instance. Le code du bâtiment typique de l'opérateur pourrait ressembler à
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
Remarque: si vous fournissez une classe de bâtiment d'opérateur composite (c'est-à-dire une classe qui crée un ensemble d'opérations liées en appelant un autre code de bâtiment d'opérateur), le nom fourni agira comme une sous-portée pour tous les opérateurs sous-jacents.
Paramètres
defaultName | nom de l'opérateur sous-jacent. |
---|
Retour
- nom unique de l'opérateur.
Jette
Exception d'argument illégal | si le nom par défaut n'est pas valide. |
---|
Public Scope withControlDependencies ( Contrôles Iterable < Opérande <? >>)
Renvoie une nouvelle portée dans laquelle les opérations ajoutées auront les dépendances de contrôle fournies.
Les opérations créées avec cette étendue auront un bord de contrôle de chacun des contrôles fournis. Toutes les autres propriétés sont héritées de la portée actuelle.
Paramètres
les contrôles | contrôler les dépendances pour les opérations créées avec la portée retournée |
---|
Retour
- une nouvelle portée avec les dépendances de contrôle fournies
public Scope withName (String opName)
Renvoie une nouvelle portée qui utilise le nom fourni pour un op.
Les opérations créées dans cette portée auront un nom de la forme name/opName[_suffix]
. Cela vous permet de nommer un opérateur spécifique de manière plus significative.
Les noms doivent correspondre à l'expression régulière [A-Za-z0-9.][A-Za-z0-9_.\-]*
Paramètres
opName | nom d'un opérateur dans la portée renvoyée |
---|
Retour
- une nouvelle portée qui utilise opName pour les opérations.
Jette
Exception d'argument illégal | si le nom est invalide |
---|
public Scope withSubScope (String childScopeName)
Renvoie une nouvelle portée dans laquelle les opérations ajoutées auront le préfixe de nom fourni.
Les opérations créées avec cette étendue auront le name/childScopeName/
comme préfixe. Le nom réel sera unique dans la portée renvoyée. Toutes les autres propriétés sont héritées de la portée actuelle.
Le nom de la portée enfant doit correspondre à l'expression régulière [A-Za-z0-9.][A-Za-z0-9_.\-]*
Paramètres
childScopeName | nom de la nouvelle étendue enfant |
---|
Retour
- une nouvelle sous-portée
Jette
Exception d'argument illégal | si le nom est invalide |
---|