Gestisce gruppi di proprietà correlate durante la creazione di operazioni Tensorflow, ad esempio un prefisso di nome comune.
Un Scope
è un contenitore per le proprietà comuni applicate a TensorFlow Ops. Il codice utente normale inizializza uno Scope
e lo fornisce alle classi di costruzione Operation. Per esempio:
Scope scope = new Scope(graph);
Constant c = Constant.create(scope, 42);
Una classe di creazione di operazioni acquisisce un ambito e lo utilizza per impostare le proprietà sulle operazioni Tensorflow sottostanti. Per esempio:
// 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()
...
}
}
Gerarchia dell'ambito:
Uno Scope
fornisce vari metodi with()
che creano un nuovo ambito. Nel nuovo ambito in genere viene modificata una proprietà mentre le altre proprietà vengono ereditate dall'ambito padre.
Un esempio che utilizza Constant
implementato come prima:
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, ...);
Gli oggetti ambito non sono thread-safe.
Costruttori pubblici
Metodi pubblici
OperationBuilder | applica (costruttore OperationBuilder ) Applica la specifica del dispositivo e aggiunge ogni operando in controlDependencies come input di controllo al builder fornito. |
OperationBuilder | applyControlDependencies (costruttore OperationBuilder ) Aggiunge ogni operando in controlDependencies come input di controllo al builder fornito. |
Ambiente di esecuzione | ambiente () Restituisce l'ambiente di esecuzione utilizzato da questo ambito. |
Corda | getDeviceString () Restituisce la stringa del dispositivo dall'ambito. |
Corda | makeOpName (Stringa defaultName) Crea un nome univoco per un operatore, utilizzando un valore predefinito fornito, se necessario. |
Ambito | withControlDependencies (controlli Iterable< Op >) Restituisce un nuovo ambito in cui le operazioni aggiunte avranno le dipendenze di controllo fornite. |
Ambito | conDispositivo ( Spec dispositivoSpec dispositivo) Restituisce un nuovo ambito che utilizza la specifica del dispositivo fornita per un'operazione. |
Ambito | withName (String opName) Restituisce un nuovo ambito che utilizza il nome fornito per un'operazione. |
Ambito | withNameAsSubScope (Stringa defaultName) Restituisce un nuovo ambito in cui le operazioni aggiunte saranno precedute dal nome operativo di questo ambito (impostato da withName(String) ) o dal valore predefinito fornito se non è impostato. |
Ambito | withSubScope (Stringa childScopeName) Restituisce un nuovo ambito in cui le operazioni aggiunte avranno il prefisso del nome fornito. |
Metodi ereditati
Costruttori pubblici
ambito pubblico (ambiente ExecutionEnvironment )
Crea un nuovo ambito di primo livello.
Parametri
ambi | L'ambiente di esecuzione utilizzato dall'ambito. |
---|
Metodi pubblici
applicare OperationBuilder pubblico (costruttore OperationBuilder )
Applica la specifica del dispositivo e aggiunge ogni operando in controlDependencies come input di controllo al builder fornito.
Parametri
costruttore | OperationBuilder a cui aggiungere input di controllo e specifiche del dispositivo |
---|
public OperationBuilder applyControlDependencies (costruttore OperationBuilder )
Aggiunge ogni operando in controlDependencies come input di controllo al builder fornito.
Parametri
costruttore | OperationBuilder a cui aggiungere input di controllo |
---|
ambiente di esecuzione pubblico env ()
Restituisce l'ambiente di esecuzione utilizzato da questo ambito.
stringa pubblica getDeviceString ()
Restituisce la stringa del dispositivo dall'ambito.
stringa pubblica makeOpName (stringa defaultName)
Crea un nome univoco per un operatore, utilizzando un valore predefinito fornito, se necessario.
Questo viene normalmente chiamato solo dalle classi di costruzione degli operatori.
Questo metodo genera un nome univoco, appropriato per l'ambito del nome controllato da questa istanza. Potrebbe essere simile un tipico codice di costruzione dell'operatore
scope.env().opBuilder("Const", scope.makeOpName("Const"))...
Nota: se fornisci una classe di creazione di operatori compositi (ovvero, una classe che crea un insieme di operazioni correlate chiamando un altro codice di creazione di operatori), il nome fornito fungerà da ambito secondario per tutti gli operatori sottostanti.
Parametri
defaultName | nome per l'operatore sottostante. |
---|
Ritorni
- nome univoco per l'operatore.
Lancia
IllegalArgumentException | se il nome predefinito non è valido. |
---|
ambito pubblico con ControlDependencies (controlli Iterable< Op >)
Restituisce un nuovo ambito in cui le operazioni aggiunte avranno le dipendenze di controllo fornite.
Le operazioni create con questo ambito avranno un vantaggio di controllo da ciascuno dei controlli forniti. Tutte le altre proprietà vengono ereditate dall'ambito corrente.
Parametri
controlli | dipendenze di controllo per le operazioni create con l'ambito restituito |
---|
Ritorni
- un nuovo ambito con le dipendenze di controllo fornite
Ambito pubblico conDevice ( DeviceSpec deviceSpec)
Restituisce un nuovo ambito che utilizza la specifica del dispositivo fornita per un'operazione.
Le operazioni create in questo ambito posizioneranno le operazioni create sui dispositivi che corrispondono alle specifiche fornite.
Parametri
dispositivoSpec | specifica del dispositivo per un operatore nell'ambito restituito |
---|
Ritorni
- un nuovo ambito che utilizza opName per le operazioni.
Ambito pubblico con Nome (String opName)
Restituisce un nuovo ambito che utilizza il nome fornito per un'operazione.
Le operazioni create in questo ambito avranno un nome nel formato name/opName[_suffix]
. Ciò ti consente di nominare un operatore specifico in modo più significativo.
I nomi devono corrispondere all'espressione regolare [A-Za-z0-9.][A-Za-z0-9_.\-]*
Parametri
opNome | nome per un operatore nell'ambito restituito |
---|
Ritorni
- un nuovo ambito che utilizza opName per le operazioni.
Lancia
IllegalArgumentException | se il nome non è valido |
---|
Ambito pubblico conNameAsSubScope (String defaultName)
Restituisce un nuovo ambito in cui le operazioni aggiunte saranno precedute dal nome operativo di questo ambito (impostato da withName(String)
) o dal valore predefinito fornito se non è impostato. Questo è destinato ad essere utilizzato per operazioni composite.
Le operazioni create con questo ambito avranno name/opName/
come prefisso. Il nome effettivo sarà univoco nell'ambito restituito. Tutte le altre proprietà vengono ereditate dall'ambito corrente.
Il nome dell'ambito figlio predefinito deve corrispondere all'espressione regolare [A-Za-z0-9.][A-Za-z0-9_.\-]*
Parametri
defaultName | nome dell'ambito secondario se il nome di questo ambito non è stato impostato. |
---|
Ritorni
- un nuovo sottoambito
Lancia
IllegalArgumentException | se il nome non è valido |
---|
Ambito pubblico conSubScope (String childScopeName)
Restituisce un nuovo ambito in cui le operazioni aggiunte avranno il prefisso del nome fornito.
Le operazioni create con questo ambito avranno name/childScopeName/
come prefisso. Il nome effettivo sarà univoco nell'ambito restituito. Tutte le altre proprietà vengono ereditate dall'ambito corrente.
Il nome dell'ambito figlio deve corrispondere all'espressione regolare [A-Za-z0-9.][A-Za-z0-9_.\-]*
Parametri
childScopeName | nome per il nuovo ambito figlio |
---|
Ritorni
- un nuovo sottoambito
Lancia
IllegalArgumentException | se il nome non è valido |
---|