flujo tensor:: Alcance

#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 de propiedades de TensorFlow Op. Los constructores de operaciones obtienen un objeto Scope como primer argumento obligatorio y la operación construida adquiere las propiedades del 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 alcance. En el nuevo ámbito normalmente se cambia una propiedad, mientras que otras propiedades se heredan del ámbito principal. El método NewSubScope(name) agrega name al prefijo de los nombres de las operaciones creadas dentro del alcance, y WithOpName() cambia el sufijo que, de lo contrario, se establece de forma predeterminada en el tipo de 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 algunos recursos que son compartidos por todos los ámbitos secundarios que heredan de este ámbito, directa o transitivamente. Por ejemplo, un nuevo alcance crea un nuevo objeto Graph al que se agregan operaciones cuando un constructor de operaciones utiliza el nuevo alcance o sus hijos. El nuevo alcance también tiene un objeto Estado que se usará para indicar errores por las funciones del Op-constructor llamadas en cualquier alcance secundario. Las funciones del Op-constructor deben verificar el estado del alcance llamando al método ok() antes de proceder a construir la operación.

Seguridad del hilo:

Un objeto Scope NO es seguro para subprocesos. Los subprocesos no pueden llamar simultáneamente a funciones del constructor de operaciones en el mismo objeto Scope .

Constructores y destructores

Scope (const Scope & other)
~Scope ()

Funciones públicas

ClearColocation () const
Borre todas las restricciones de colocación.
ColocateWith (const Operation & op) const
Devuelve un nuevo alcance.
ColocateWith (const Output & out) const
Función de conveniencia para lo anterior.
ExitOnError () const
Devuelve un nuevo alcance.
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 alcance.
ToGraphDef (GraphDef *gdef) const
Si status() es Status::OK(), convierta el objeto Graph almacenado en este alcance en un proto GraphDef y devuelva Status::OK().
UpdateStatus (const Status s) const
void
Actualice el estado en este ámbito.
WithAssignedDevice (const string & assigned_device) const
Devuelve un nuevo alcance.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Devuelve un nuevo alcance.
WithControlDependencies (const Output & control_dep) const
Igual que el anterior, pero es conveniente agregar dependencia de control en la operación que produce la salida control_dep.
WithDevice (const string & device) const
Devuelve un nuevo alcance.
WithKernelLabel (const string & kernel_label) const
Devuelve un nuevo alcance.
WithNoControlDependencies () const
Devuelve un nuevo alcance.
WithOpName (Ty... fragments) const
Devuelve un nuevo alcance.
WithXlaCluster (const string & xla_cluster) const
Devuelve un nuevo alcance.
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 alcance.

Funciones públicas

BorrarColocación

Scope ClearColocation() const 

Borre todas las restricciones de colocación.

Colocar con

Scope ColocateWith(
  const Operation & op
) const 

Devuelve un nuevo alcance.

Todas las operaciones creadas dentro del alcance devuelto se ubicarán en el dispositivo donde se coloca la operación. NOTA: Esta función está diseñada para usarse en bibliotecas internas solo para controlar la ubicación de operaciones en los dispositivos. No se recomienda el uso público porque la implementación de la ubicación de los dispositivos está sujeta a cambios.

Colocar con

Scope ColocateWith(
  const Output & out
) const 

Función de conveniencia para lo anterior.

Salir en error

Scope ExitOnError() const 

Devuelve un nuevo alcance.

Las funciones del constructor de operaciones que toman el alcance devuelto como argumento de alcance saldrán tan pronto como se detecte un error, en lugar de establecer el estado en el alcance.

Obtener CompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

Obtener nombre único para Op

string GetUniqueNameForOp(
  const string & default_name
) const 

Devuelve un nombre único, utilizando default_name si no se ha especificado un nombre de operación.

NuevoSubScope

Scope NewSubScope(
  const string & child_scope_name
) const 

Devuelve un nuevo alcance.

Las operaciones creadas con este alcance tendrán name/child_scope_name como prefijo. 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 / .

Alcance

 Scope(
  const Scope & other
)

ToGraphDef

Status ToGraphDef(
  GraphDef *gdef
) const 

Si status() es Status::OK(), convierta el objeto Graph almacenado en este alcance en un proto GraphDef y devuelva Status::OK().

De lo contrario, devuelva el estado de error tal cual sin realizar la conversión GraphDef.

Estado de actualización

void UpdateStatus(
  const Status s
) const 

Actualice el estado en este alcance.

Nota: El objeto de estado 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 sale llamando a LOG(FATAL).

Con dispositivo asignado

Scope WithAssignedDevice(
  const string & assigned_device
) const 

Devuelve un nuevo alcance.

Todas las operaciones creadas dentro del alcance devuelto tendrán su dispositivo asignado configurado en assigned_device .

Con dependencias de control

Scope WithControlDependencies(
  const gtl::ArraySlice< Operation > & control_deps
) const 

Devuelve un nuevo alcance.

Todas las operaciones creadas dentro del alcance devuelto tendrán como dependencias de control la unión de operaciones en el vector control_deps y las dependencias de control del alcance actual.

Con dependencias de control

Scope WithControlDependencies(
  const Output & control_dep
) const 

Igual que el anterior, pero es conveniente agregar dependencia de control en la operación que produce la salida control_dep.

Con dispositivo

Scope WithDevice(
  const string & device
) const 

Devuelve un nuevo alcance.

Todas las operaciones creadas dentro del alcance devuelto tendrán el campo del dispositivo configurado en "dispositivo".

ConKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Devuelve un nuevo alcance.

Todas las operaciones creadas con el nuevo alcance tendrán kernel_label como valor para su atributo '_kernel';

Sin dependencias de control

Scope WithNoControlDependencies() const 

Devuelve un nuevo alcance.

Todas las operaciones creadas dentro del alcance devuelto no tendrán dependencias de control de otras operaciones.

ConNombreOp

Scope WithOpName(
  Ty... fragments
) const 

Devuelve un nuevo alcance.

Todas las operaciones creadas dentro del alcance devuelto tendrán nombres del formato name/StrCat(fragments...)[_suffix]

ConXlaCluster

Scope WithXlaCluster(
  const string & xla_cluster
) const 

Devuelve un nuevo alcance.

Todas las operaciones creadas dentro del alcance devuelto tendrán su atributo _XlaCluster establecido en xla_cluster .

controles_deps

const std::vector< Operation > & control_deps() const 

gráfico

Graph * graph() const 

gráfico_as_shared_ptr

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 alcance raíz

Scope NewRootScope()

Devuelve un nuevo alcance.

Esto crea un nuevo gráfico y todas las operaciones construidas en este gráfico deben utilizar el objeto devuelto como alcance "raíz".