tensorflow:: 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 para las 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 simple:

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, el nuevo ámbito tiene una propiedad cambiada, mientras que otras propiedades se heredan del ámbito principal. El método NewSubScope(name) agrega el name al prefijo de los nombres de las operaciones creadas dentro del alcance, y WithOpName() cambia el sufijo que, de lo contrario, tiene como valor predeterminado 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 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 Op utiliza el nuevo alcance o sus elementos secundarios. El nuevo alcance también tiene un objeto de estado que se usará para indicar errores mediante las funciones del constructor de operaciones invocadas en cualquier alcance secundario. Las funciones del constructor de operaciones 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 de constructores de operaciones en el mismo objeto Scope .

Constructores y Destructores

Scope (const Scope & other)
~Scope ()

Funciones publicas

ClearColocation () const
Borre todas las restricciones de colocación.
ColocateWith (const Operation & op) const
Devuelve un nuevo ámbito.
ColocateWith (const Output & out) const
Función de conveniencia para arriba.
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(), convierta el objeto Graph almacenado en este ámbito en un prototipo de 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 ámbito.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Devuelve un nuevo ámbito.
WithControlDependencies (const Output & control_dep) const
Igual que el anterior, pero conveniente para agregar dependencia de control en 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 publicas

ClearCoubicación

Scope ClearColocation() const 

Borre todas las restricciones de colocación.

Colocar con

Scope ColocateWith(
  const Operation & op
) const 

Devuelve un nuevo ámbito.

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 usar bibliotecas internas solo para controlar la ubicación de las operaciones en los dispositivos. No se recomienda el uso público porque la implementación de la colocación de dispositivos está sujeta a cambios.

Colocar con

Scope ColocateWith(
  const Output & out
) const 

Función de conveniencia para arriba.

ExitOnError

Scope ExitOnError() const 

Devuelve un nuevo ámbito.

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

GetCompositeOpScopes

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 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
)

ParaGraphDef

Status ToGraphDef(
  GraphDef *gdef
) const 

Si status() es Status::OK(), convierta el objeto Graph almacenado en este ámbito en un prototipo de GraphDef y devuelva Status::OK().

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

Estado de actualización

void UpdateStatus(
  const Status s
) const 

Actualice el estado en este ámbito.

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_ se establece en este ámbito, esta función sale llamando a LOG(FATAL).

ConDispositivoAsignado

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 .

ConDependenciasDeControl

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

Devuelve un nuevo ámbito.

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.

ConDependenciasDeControl

Scope WithControlDependencies(
  const Output & control_dep
) const 

Igual que el anterior, pero conveniente para 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 ámbito.

Todas las operaciones creadas dentro del alcance devuelto tendrán el campo de dispositivo establecido en 'dispositivo'.

ConEtiquetaKernel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Devuelve un nuevo ámbito.

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 ámbito.

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

ConNombreOp

Scope WithOpName(
  Ty... fragments
) const 

Devuelve un nuevo ámbito.

Todas las operaciones creadas dentro del alcance devuelto tendrán nombres de la forma 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 .

control_deps

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

grafico

Graph * graph() const 

graph_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

NuevoRootScope

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 el ámbito "raíz".