tensorflow:: Ámbito
#include <scope.h> Un objeto Scope representa un conjunto de operaciones de TensorFlow relacionadas que tienen las mismas propiedades, como un prefijo de nombre común.
Resumen
Un objeto Scope es un contenedor para las propiedades de las operaciones de TensorFlow. Los constructores de operaciones reciben un objeto Scope como primer argumento obligatorio, y la operación construida adquiere las propiedades contenidas en dicho objeto.
Un ejemplo sencillo:
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()) { ... }
Jerarquía de alcance :
La clase Scope proporciona varias funciones With<> que crean un nuevo ámbito. Normalmente, al nuevo ámbito se le modifica una propiedad, mientras que las demás se heredan del ámbito padre. El método NewSubScope(name) añade name al prefijo de nombres de las operaciones creadas dentro del ámbito, y WithOpName() cambia el sufijo, que de otro modo tomaría por defecto el tipo de la operación.
Ejemplos de nombres:
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"
Vida útil del alcance :
Se crea un nuevo ámbito llamando a `Scope::NewRootScope` . Esto crea recursos que son compartidos por todos los ámbitos secundarios que heredan de este ámbito, ya sea directa o indirectamente. Por ejemplo, un nuevo ámbito crea un nuevo objeto `Graph` al que se le añaden operaciones cuando el constructor de `Op` utiliza el nuevo ámbito o sus elementos secundarios. El nuevo ámbito también tiene un objeto `Status` que se utilizará para indicar errores en las funciones constructoras de `Op` que se llamen en cualquier ámbito secundario. Las funciones constructoras de `Op` deben comprobar el estado del ámbito llamando al método `ok()` antes de proceder a construir la operación.
Seguridad de la rosca:
Un objeto Scope NO es seguro para subprocesos. Los subprocesos no pueden llamar simultáneamente a las funciones del constructor de operaciones en el mismo objeto Scope .
Constructores y destructores | |
|---|---|
Scope (const Scope & other) | |
~Scope () |
Funciones públicas | |
|---|---|
ClearColocation () const | Elimine todas las restricciones de ubicación. |
ColocateWith (const Operation & op) const | Devuelve un nuevo ámbito. |
ColocateWith (const Output & out) const | Función de conveniencia para lo anterior. |
ExitOnError () const | Devuelve un nuevo ámbito. |
GetCompositeOpScopes (const string & composite_op_name) const | |
GetUniqueNameForOp (const string & default_name) const | string Devuelve un nombre único, utilizando default_name si no se ha especificado un nombre de operación. |
NewSubScope (const string & child_scope_name) const | Devuelve un nuevo ámbito. |
ToGraphDef (GraphDef *gdef) const | Status Si status() es Status::OK(), convierte el objeto Graph almacenado en este ámbito a un proto GraphDef y devuelve Status::OK(). |
UpdateStatus (const Status & s) const | void Actualizar el estado de este ámbito. |
WithAssignedDevice (const string & assigned_device) const | Devuelve un nuevo ámbito. |
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const | Devuelve un nuevo ámbito. |
WithControlDependencies (const Output & control_dep) const | Igual que lo anterior, pero conveniente para agregar una dependencia de control a la operación que produce la salida control_dep. |
WithDevice (const string & device) const | Devuelve un nuevo ámbito. |
WithKernelLabel (const string & kernel_label) const | Devuelve un nuevo ámbito. |
WithNoControlDependencies () const | Devuelve un nuevo ámbito. |
WithOpName (Ty... fragments) const | Devuelve un nuevo ámbito. |
WithXlaCluster (const string & xla_cluster) const | Devuelve un nuevo ámbito. |
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 | Status |
funciones estáticas públicas | |
|---|---|
NewRootScope () | Devuelve un nuevo ámbito. |
Funciones públicas
Colocar con
Scope ColocateWith( const Operation & op ) const
Devuelve un nuevo ámbito.
Todas las operaciones creadas dentro del ámbito devuelto se ubicarán en el dispositivo donde se coloque la operación. NOTA: Esta función está diseñada para usarse únicamente con bibliotecas internas para controlar la ubicación de las operaciones en los dispositivos. No se recomienda su uso público, ya que la implementación de la ubicación en dispositivos está sujeta a cambios.
Colocar con
Scope ColocateWith( const Output & out ) const
Función de conveniencia para lo anterior.
Salir en caso de error
Scope ExitOnError() const
Devuelve un nuevo ámbito.
Las funciones constructoras de operaciones que toman el ámbito devuelto como argumento de ámbito finalizarán tan pronto como se detecte un error, en lugar de establecer el estado en el ámbito.
ObtenerOpScopesCompuestos
CompositeOpScopes GetCompositeOpScopes( const string & composite_op_name ) const
ObtenerNombreÚnicoParaOp
string GetUniqueNameForOp( const string & default_name ) const
Devuelve un nombre único, utilizando default_name si no se ha especificado un nombre de operación.
Nuevo subámbito
Scope NewSubScope( const string & child_scope_name ) const
Devuelve un nuevo ámbito.
Las operaciones creadas con este ámbito tendrán como prefijo name/child_scope_name . El nombre real será único en el ámbito actual. Todas las demás propiedades se heredan del ámbito actual. Si child_scope_name está vacío, se omite / barra diagonal.
Alcance
Scope( const Scope & other )
Definición de gráfico
Status ToGraphDef( GraphDef *gdef ) const
Si status() es Status::OK(), convierte el objeto Graph almacenado en este ámbito a un proto GraphDef y devuelve Status::OK().
De lo contrario, devuelva el estado de error tal cual, sin realizar la conversión de GraphDef.
Estado de actualización
void UpdateStatus( const Status & s ) const
Actualizar el estado de este ámbito.
Nota: El objeto status se comparte entre todos los elementos secundarios de este ámbito. Si el estado resultante no es Status::OK() y exit_on_error_ está configurado en este ámbito, esta función finaliza llamando a LOG(FATAL).
Con dispositivo asignado
Scope WithAssignedDevice( const string & assigned_device ) const
Devuelve un nuevo ámbito.
Todas las operaciones creadas dentro del ámbito devuelto tendrán su dispositivo asignado establecido en assigned_device .
Con dependencias de control
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Devuelve un nuevo ámbito.
Todas las operaciones creadas dentro del ámbito devuelto tendrán como dependencias de control la unión de las operaciones en el vector control_deps y las dependencias de control del ámbito actual.
Con dependencias de control
Scope WithControlDependencies( const Output & control_dep ) const
Igual que lo anterior, pero conveniente para agregar una dependencia de control a la operación que produce la salida control_dep.
Con dispositivo
Scope WithDevice( const string & device ) const
Devuelve un nuevo ámbito.
Todas las operaciones creadas dentro del ámbito devuelto tendrán el campo dispositivo establecido en 'device'.
Con etiqueta de kernel
Scope WithKernelLabel( const string & kernel_label ) const
Devuelve un nuevo ámbito.
Todas las operaciones creadas con el nuevo ámbito tendrán kernel_label como valor para su atributo '_kernel';
Sin dependencias de control
Scope WithNoControlDependencies() const
Devuelve un nuevo ámbito.
Todas las operaciones creadas dentro del ámbito devuelto no tendrán dependencias de control con respecto a otras operaciones.
ConOpName
Scope WithOpName( Ty... fragments ) const
Devuelve un nuevo ámbito.
Todas las operaciones creadas dentro del ámbito devuelto tendrán nombres del formato name/StrCat(fragments...)[_suffix]
ConXlaCluster
Scope WithXlaCluster( const string & xla_cluster ) const
Devuelve un nuevo ámbito.
Todas las operaciones creadas dentro del ámbito devuelto tendrán su atributo _XlaCluster establecido en xla_cluster .
dependencias de control
const std::vector< Operation > & control_deps() const
gráfico
Graph * graph() const
gráfico_como_ptr_compartido
std::shared_ptr< Graph > graph_as_shared_ptr() const
OK
bool ok() const
estado
Status status() const
~Alcance
~Scope()
funciones estáticas públicas
Nuevo ámbito raíz
Scope NewRootScope()
Devuelve un nuevo ámbito.
Esto crea un nuevo gráfico y todas las operaciones construidas en este gráfico deben usar el objeto devuelto como ámbito "raíz".