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
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)
status () const

funciones estáticas públicas

NewRootScope ()
Devuelve un nuevo ámbito.

Funciones públicas

ClearColocation

Scope ClearColocation() const 

Elimine todas las restricciones de ubicación.

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 

operador=

Scope & operator=(
  const Scope & other
)

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".