Tensorflow :: Umfang
#include <scope.h>
Ein Scope
Objekt repräsentiert eine Reihe verwandter TensorFlow-Operationen, die dieselben Eigenschaften haben, z. B. ein gemeinsames Namenspräfix.
Zusammenfassung
Ein Scope- Objekt ist ein Container für TensorFlow Op-Eigenschaften. Op-Konstruktoren erhalten ein Scope- Objekt als obligatorisches erstes Argument, und das konstruierte op erhält die Eigenschaften im Objekt.
Ein einfaches Beispiel:
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()) { ... }
Die Scope- Klasse bietet verschiedene With <> -Funktionen, mit denen ein neuer Bereich erstellt wird. Im neuen Bereich wird normalerweise eine Eigenschaft geändert, während andere Eigenschaften vom übergeordneten Bereich geerbt werden. Die NewSubScope (name) -Methode hängt den name
an das Präfix der Namen für im Bereich erstellte Operationen an , und WithOpName () ändert das Suffix, das ansonsten standardmäßig den Typ der Operation verwendet .
Namensbeispiele:
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"
Lebensdauer des Anwendungsbereichs :
Ein neuer Bereich wird durch Aufrufen von Scope :: NewRootScope erstellt . Dadurch werden einige Ressourcen erstellt, die von allen untergeordneten Bereichen, die direkt oder transitiv von diesem Bereich erben, gemeinsam genutzt werden. Beispielsweise erstellt ein neuer Bereich ein neues Diagrammobjekt, dem Operationen hinzugefügt werden, wenn der neue Bereich oder seine untergeordneten Elemente von einem Op-Konstruktor verwendet werden. Der neue Bereich verfügt auch über ein Status- Objekt, mit dem Fehler von Op-Konstruktor-Funktionen angezeigt werden, die für einen untergeordneten Bereich aufgerufen werden. Die Op-Konstruktor-Funktionen müssen den Status des Bereichs überprüfen, indem sie die ok () -Methode aufrufen, bevor sie mit der Erstellung des Op fortfahren.
Gewindesicherheit:
Ein Scope
Objekt ist NICHT threadsicher. Threads können nicht gleichzeitig Op-Konstruktor-Funktionen für dasselbe Scope
Objekt aufrufen.
Konstruktoren und Destruktoren | |
---|---|
Scope (const Scope & other) | |
~Scope () |
Öffentliche Funktionen | |
---|---|
ClearColocation () const | Deaktivieren Sie alle Colocation-Einschränkungen. |
ColocateWith (const Operation & op) const | Geben Sie einen neuen Bereich zurück. |
ColocateWith (const Output & out) const | Komfortfunktion für oben. |
ExitOnError () const | Geben Sie einen neuen Bereich zurück. |
GetCompositeOpScopes (const string & composite_op_name) const | |
GetUniqueNameForOp (const string & default_name) const | string Geben Sie einen eindeutigen Namen mit default_name zurück, wenn kein Op-Name angegeben wurde. |
NewSubScope (const string & child_scope_name) const | Geben Sie einen neuen Bereich zurück. |
ToGraphDef (GraphDef *gdef) const | Wenn status () Status :: OK () ist, konvertieren Sie das in diesem Bereich gespeicherte Graph-Objekt in ein GraphDef-Proto und geben Sie Status :: OK () zurück. |
UpdateStatus (const Status & s) const | void Aktualisieren Sie den Status dieses Bereichs. |
WithAssignedDevice (const string & assigned_device) const | Gibt einen neuen Bereich zurück. |
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const | Geben Sie einen neuen Bereich zurück. |
WithControlDependencies (const Output & control_dep) const | Wie oben, jedoch praktisch, um die Steuerungsabhängigkeit von der Operation hinzuzufügen, die die Ausgabe control_dep erzeugt. |
WithDevice (const string & device) const | Geben Sie einen neuen Bereich zurück. |
WithKernelLabel (const string & kernel_label) const | Geben Sie einen neuen Bereich zurück. |
WithNoControlDependencies () const | Geben Sie einen neuen Bereich zurück. |
WithOpName (Ty... fragments) const | Geben Sie einen neuen Bereich zurück. |
WithXlaCluster (const string & xla_cluster) const | Gibt einen neuen Bereich zurück. |
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 |
Öffentliche statische Funktionen | |
---|---|
NewRootScope () | Geben Sie einen neuen Bereich zurück. |
Öffentliche Funktionen
ColocateWith
Scope ColocateWith( const Operation & op ) const
Geben Sie einen neuen Bereich zurück.
Alle im zurückgegebenen Bereich erstellten Operationen befinden sich auf dem Gerät, auf dem die Operation platziert ist. HINWEIS: Diese Funktion dient nur zur Verwendung interner Bibliotheken zur Steuerung der Platzierung von Operationen auf Geräten. Die öffentliche Nutzung wird nicht empfohlen, da sich die Implementierung der Geräteplatzierung ändern kann.
ExitOnError
Scope ExitOnError() const
Geben Sie einen neuen Bereich zurück.
Die op-Konstruktorfunktionen, die den zurückgegebenen Bereich als Bereichsargument verwenden, werden beendet, sobald ein Fehler erkannt wird, anstatt den Status für den Bereich festzulegen.
GetCompositeOpScopes
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
GetUniqueNameForOp
string GetUniqueNameForOp( const string & default_name ) const
Geben Sie einen eindeutigen Namen mit default_name zurück, wenn kein Op-Name angegeben wurde.
NewSubScope
Scope NewSubScope( const string & child_scope_name ) const
Geben Sie einen neuen Bereich zurück.
Operationen, die mit diesem Bereich erstellt wurden, haben den name/child_scope_name
als Präfix. Der tatsächliche Name ist im aktuellen Bereich eindeutig. Alle anderen Eigenschaften werden vom aktuellen Bereich übernommen. Wenn child_scope_name
leer ist, wird das /
entfernt.
Umfang
Scope( const Scope & other )
ToGraphDef
Status ToGraphDef( GraphDef *gdef ) const
Wenn status () Status :: OK () ist, konvertieren Sie das in diesem Bereich gespeicherte Graph-Objekt in ein GraphDef-Proto und geben Sie Status :: OK () zurück.
Andernfalls geben Sie den Fehlerstatus unverändert zurück, ohne eine GraphDef-Konvertierung durchzuführen.
Update Status
void UpdateStatus( const Status & s ) const
Aktualisieren Sie den Status dieses Bereichs.
Hinweis: Das Statusobjekt wird von allen untergeordneten Elementen dieses Bereichs gemeinsam genutzt. Wenn der resultierende Status nicht Status :: OK () ist und exit_on_error_ für diesen Bereich festgelegt ist, wird diese Funktion durch Aufrufen von LOG (FATAL) beendet.
WithAssignedDevice
Scope WithAssignedDevice( const string & assigned_device ) const
Gibt einen neuen Bereich zurück.
Alle Ops innerhalb des zurückgegebenen Bereich erstellt wird ihnen zugewiesenen Gerät eingestellt haben assigned_device
.
WithControlDependencies
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Geben Sie einen neuen Bereich zurück.
Alle im zurückgegebenen Bereich erstellten Operationen haben als Steuerungsabhängigkeiten die Vereinigung von Operationen im Vektor control_deps und die Steuerungsabhängigkeiten des aktuellen Bereichs.
WithControlDependencies
Scope WithControlDependencies( const Output & control_dep ) const
Wie oben, jedoch praktisch, um die Steuerungsabhängigkeit von der Operation hinzuzufügen, die die Ausgabe control_dep erzeugt.
WithDevice
Scope WithDevice( const string & device ) const
Geben Sie einen neuen Bereich zurück.
Bei allen im zurückgegebenen Bereich erstellten Operationen wird das Gerätefeld auf "Gerät" gesetzt.
WithKernelLabel
Scope WithKernelLabel( const string & kernel_label ) const
Geben Sie einen neuen Bereich zurück.
Alle mit dem neuen Bereich erstellten Operationen haben kernel_label als Wert für ihr Attribut '_kernel'.
WithNoControlDependencies
Scope WithNoControlDependencies() const
Geben Sie einen neuen Bereich zurück.
Alle im zurückgegebenen Bereich erstellten Operationen haben keine Steuerungsabhängigkeiten von anderen Vorgängen.
WithOpName
Scope WithOpName( Ty... fragments ) const
Geben Sie einen neuen Bereich zurück.
Alle im zurückgegebenen Bereich erstellten name/StrCat(fragments...)[_suffix]
haben Namen des Formularnamens name/StrCat(fragments...)[_suffix]
WithXlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
Gibt einen neuen Bereich zurück.
Für alle im zurückgegebenen Bereich erstellten Operationen wird das Attribut xla_cluster
auf xla_cluster
.
control_deps
const std::vector< Operation > & control_deps() const
Graph
Graph * graph() const
graph_as_shared_ptr
std::shared_ptr< Graph > graph_as_shared_ptr() const
OK
bool ok() const
Status
Status status() const
~ Geltungsbereich
~Scope()
Öffentliche statische Funktionen
NewRootScope
Scope NewRootScope()
Geben Sie einen neuen Bereich zurück.
Dadurch wird ein neues Diagramm erstellt, und alle in diesem Diagramm erstellten Operationen sollten das zurückgegebene Objekt als "Root" -Bereich verwenden.