tensorflow:: Escopo

#include <scope.h>

Um objeto Scope representa um conjunto de operações TensorFlow relacionadas que possuem as mesmas propriedades, como um prefixo de nome comum.

Resumo

Um objeto Scope é um contêiner para propriedades de Op do TensorFlow. Os construtores de Op recebem um objeto Scope como primeiro argumento obrigatório e o op construído herda as propriedades contidas nesse objeto.

Um exemplo simples:

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()) { ... }

Hierarquia de escopo :

A classe Scope fornece várias funções With<> que criam um novo escopo. O novo escopo normalmente tem uma propriedade alterada, enquanto as outras propriedades são herdadas do escopo pai. O método NewSubScope(name) adiciona name ao prefixo dos nomes das operações criadas dentro do escopo, e WithOpName() altera o sufixo, que por padrão é o tipo da operação.

Exemplos de nomes:

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"

Duração do escopo :

Um novo escopo é criado chamando `Scope::NewRootScope` . Isso cria alguns recursos que são compartilhados por todos os escopos filhos que herdam deste escopo, direta ou transitivamente. Por exemplo, um novo escopo cria um novo objeto `Graph` ao qual as operações são adicionadas quando o novo escopo ou seus filhos são usados ​​por um construtor de `Op`. O novo escopo também possui um objeto `Status` que será usado para indicar erros pelas funções construtoras de `Op` chamadas em qualquer escopo filho. As funções construtoras de `Op` precisam verificar o status do escopo chamando o método `ok()` antes de prosseguir com a construção da operação.

Segurança da rosca:

Um objeto Scope NÃO é thread-safe. Threads não podem chamar simultaneamente funções construtoras do mesmo objeto Scope .

Construtores e Destrutores

Scope (const Scope & other)
~Scope ()

Funções públicas

ClearColocation () const
Remover todas as restrições de colocalização.
ColocateWith (const Operation & op) const
Retorna um novo escopo.
ColocateWith (const Output & out) const
Função de conveniência para o item acima.
ExitOnError () const
Retorna um novo escopo.
GetCompositeOpScopes (const string & composite_op_name) const
GetUniqueNameForOp (const string & default_name) const
string
Retorna um nome único, usando `default_name` caso nenhum nome de operação tenha sido especificado.
NewSubScope (const string & child_scope_name) const
Retorna um novo escopo.
ToGraphDef (GraphDef *gdef) const
Status
Se status() for Status::OK(), converta o objeto Graph armazenado neste escopo para um proto GraphDef e retorne Status::OK().
UpdateStatus (const Status & s) const
void
Atualize o status deste escopo.
WithAssignedDevice (const string & assigned_device) const
Retorna um novo escopo.
WithControlDependencies (const gtl::ArraySlice< Operation > & control_deps) const
Retorna um novo escopo.
WithControlDependencies (const Output & control_dep) const
Semelhante ao anterior, mas conveniente para adicionar dependência de controle na operação que produz a saída control_dep.
WithDevice (const string & device) const
Retorna um novo escopo.
WithKernelLabel (const string & kernel_label) const
Retorna um novo escopo.
WithNoControlDependencies () const
Retorna um novo escopo.
WithOpName (Ty... fragments) const
Retorna um novo escopo.
WithXlaCluster (const string & xla_cluster) const
Retorna um novo escopo.
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
Status

Funções estáticas públicas

NewRootScope ()
Retorna um novo escopo.

Funções públicas

ClearColocação

Scope ClearColocation() const 

Remover todas as restrições de colocalização.

Colocar em conjunto com

Scope ColocateWith(
  const Operation & op
) const 

Retorna um novo escopo.

Todas as operações criadas dentro do escopo retornado serão alocadas no mesmo dispositivo onde a operação foi colocada. NOTA: Esta função destina-se ao uso exclusivo de bibliotecas internas para controlar a alocação de operações em dispositivos. O uso público não é recomendado, pois a implementação da alocação de dispositivos está sujeita a alterações.

Colocar em conjunto com

Scope ColocateWith(
  const Output & out
) const 

Função de conveniência para o item acima.

SairEmCasoErro

Scope ExitOnError() const 

Retorna um novo escopo.

As funções construtoras do tipo op que recebem o escopo retornado como argumento de escopo serão encerradas assim que um erro for detectado, em vez de definir o status no escopo.

ObterEscoposOpCompostos

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

Retorna um nome único, usando `default_name` caso nenhum nome de operação tenha sido especificado.

NovoSubescopo

Scope NewSubScope(
  const string & child_scope_name
) const 

Retorna um novo escopo.

As operações criadas com este escopo terão o prefixo name/child_scope_name . O nome em si será único no escopo atual. Todas as outras propriedades são herdadas do escopo atual. Se child_scope_name estiver vazio, a barra / será omitida.

Escopo

 Scope(
  const Scope & other
)

ToGraphDef

Status ToGraphDef(
  GraphDef *gdef
) const 

Se status() for Status::OK(), converta o objeto Graph armazenado neste escopo para um proto GraphDef e retorne Status::OK().

Caso contrário, retorne o status de erro como está, sem realizar a conversão GraphDef.

AtualizarStatus

void UpdateStatus(
  const Status & s
) const 

Atualize o status deste escopo.

Nota: O objeto de status é compartilhado entre todos os filhos deste escopo. Se o status resultante não for Status::OK() e exit_on_error_ estiver definido neste escopo, esta função será encerrada chamando LOG(FATAL).

Com dispositivo atribuído

Scope WithAssignedDevice(
  const string & assigned_device
) const 

Retorna um novo escopo.

Todas as operações criadas dentro do escopo retornado terão seu dispositivo atribuído definido como assigned_device .

ComDependênciasDeControle

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

Retorna um novo escopo.

Todas as operações criadas dentro do escopo retornado terão como dependências de controle a união das operações no vetor `control_deps` e as dependências de controle do escopo atual.

ComDependênciasDeControle

Scope WithControlDependencies(
  const Output & control_dep
) const 

Semelhante ao anterior, mas conveniente para adicionar dependência de controle na operação que produz a saída control_dep.

Com dispositivo

Scope WithDevice(
  const string & device
) const 

Retorna um novo escopo.

Todas as operações criadas dentro do escopo retornado terão o campo de dispositivo definido como 'dispositivo'.

Com rótulo do kernel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Retorna um novo escopo.

Todas as operações criadas com o novo escopo terão kernel_label como o valor para seu atributo '_kernel';

Sem dependências de controle

Scope WithNoControlDependencies() const 

Retorna um novo escopo.

Todas as operações criadas dentro do escopo retornado não terão dependências de controle em relação a outras operações.

ComOpName

Scope WithOpName(
  Ty... fragments
) const 

Retorna um novo escopo.

Todas as operações criadas dentro do escopo retornado terão nomes no formato name/StrCat(fragments...)[_suffix]

ComXlaCluster

Scope WithXlaCluster(
  const string & xla_cluster
) const 

Retorna um novo escopo.

Todas as operações criadas dentro do escopo retornado terão seu atributo _XlaCluster definido como xla_cluster .

dependências de controle

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

gráfico

Graph * graph() const 

gráfico_como_ponteiro_compartilhado

std::shared_ptr< Graph > graph_as_shared_ptr() const 

OK

bool ok() const 

operador=

Scope & operator=(
  const Scope & other
)

status

Status status() const 

~Escopo

 ~Scope()

Funções estáticas públicas

NewRootScope

Scope NewRootScope()

Retorna um novo escopo.

Isso cria um novo grafo e todas as operações construídas nesse grafo devem usar o objeto retornado como escopo "raiz".