Gère les groupes de propriétés associées lors de la création d'opérations Tensorflow, telles qu'un préfixe de nom commun.
Un Scope
est un conteneur de propriétés communes appliquées à TensorFlow Ops. Le code utilisateur normal initialise une Scope
et la fournit aux classes de création d'opérations. Par exemple:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
Une classe de création d'opérations acquiert une portée et l'utilise pour définir les propriétés des 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 de portée :
Un Scope
fournit diverses méthodes 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.
Un exemple utilisant Constant
implémenté comme auparavant :
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
OpérationBuilder | applyControlDependencies (générateur OperationBuilder ) Ajoute chaque opérande dans controlDependencies en tant qu'entrée de contrôle au générateur fourni. |
Environnement d'exécution | env () Renvoie l'environnement d'exécution utilisé par cette étendue. |
Chaîne | makeOpName (String defaultName) Créez un nom unique pour un opérateur, en utilisant un nom par défaut fourni si nécessaire. |
Portée | withControlDependencies (contrôles Iterable< Operand <?>>) Renvoie une nouvelle portée dans laquelle les opérations ajoutées auront les dépendances de contrôle fournies. |
Portée | withName (String opName) Renvoie une nouvelle portée qui utilise le nom fourni pour une opération. |
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 (environnement ExecutionEnvironment )
Créez une nouvelle étendue de niveau supérieur.
Paramètres
env | L’environnement d’exécution utilisé par la portée. |
---|
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 à |
---|
environnement d'exécution public env ()
Renvoie l'environnement d'exécution utilisé par cette étendue.
public String makeOpName (String defaultName)
Créez un nom unique pour un opérateur, en utilisant un nom par défaut fourni 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 de nom contrôlée par cette instance. Le code du bâtiment typique d'un opérateur pourrait ressembler à
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
Remarque : si vous fournissez une classe de création d'opérateurs composites (c'est-à-dire une classe qui crée un ensemble d'opérations associées en appelant le code de création d'un autre opérateur), le nom fourni fera office de sous-portée pour tous les opérateurs sous-jacents.
Paramètres
Nom par défaut | nom de l’opérateur sous-jacent. |
---|
Retours
- nom unique de l'opérateur.
Jetés
IllegalArgumentException | si le nom par défaut n'est pas valide. |
---|
Portée publique avec ControlDependencies (contrôles Iterable < Operand <?>>)
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 portée auront un avantage de contrôle pour chacun des contrôles fournis. Toutes les autres propriétés sont héritées de la portée actuelle.
Paramètres
contrôles | contrôler les dépendances pour les opérations créées avec la portée renvoyée |
---|
Retours
- une nouvelle portée avec les dépendances de contrôle fournies
Portée publique withName (String opName)
Renvoie une nouvelle portée qui utilise le nom fourni pour une opération.
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
NomOp | nom d'un opérateur dans la portée renvoyée |
---|
Retours
- une nouvelle portée qui utilise opName pour les opérations.
Jetés
IllegalArgumentException | si le nom n'est pas valide |
---|
Portée publique avec SubScope (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 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
nomEnfantScopeName | nom de la nouvelle portée enfant |
---|
Retours
- un nouveau sous-domaine
Jetés
IllegalArgumentException | si le nom n'est pas valide |
---|