fluxo tensor:: Escopo

#include <scope.h>

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

Resumo

Um objeto Scope é um contêiner para propriedades do TensorFlow Op. Os construtores de operações obtêm um objeto Scope como primeiro argumento obrigatório e a operação construída adquire as propriedades do 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 outras propriedades são herdadas do escopo pai. O método NewSubScope(name) anexa name ao prefixo dos nomes das operações criadas dentro do escopo e WithOpName() altera o sufixo que, de outra forma, é padronizado para 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"

Vida útil do escopo :

Um novo escopo é criado chamando Scope::NewRootScope . Isto 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 Op. O novo escopo também possui um objeto Status que será usado para indicar erros por funções do construtor Op chamadas em qualquer escopo filho. As funções do construtor Op devem verificar o status do escopo chamando o método ok() antes de prosseguir com a construção da operação.

Segurança do fio:

Um objeto Scope NÃO é thread-safe. Threads não podem chamar simultaneamente funções de construtor operacional no mesmo objeto Scope .

Construtores e Destruidores

Scope (const Scope & other)
~Scope ()

Funções públicas

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

Funções públicas

ClearColocation

Scope ClearColocation() const 

Limpe todas as restrições de colocation.

ColocateCom

Scope ColocateWith(
  const Operation & op
) const 

Retorne um novo escopo.

Todas as operações criadas no escopo retornado serão co-localizadas no dispositivo onde a operação está colocada. NOTA: Esta função destina-se a usar bibliotecas internas apenas para controlar o posicionamento de operações em dispositivos. O uso público não é incentivado porque a implementação do posicionamento do dispositivo está sujeita a alterações.

ColocateCom

Scope ColocateWith(
  const Output & out
) const 

Função de conveniência acima.

ExitOnError

Scope ExitOnError() const 

Retorne um novo escopo.

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

ObterCompositeOpScopes

CompositeOpScopes GetCompositeOpScopes(
  const string & composite_op_name
) const 

GetUniqueNameForOp

string GetUniqueNameForOp(
  const string & default_name
) const 

Retorne um nome exclusivo, usando default_name se um nome de operação não tiver sido especificado.

NovoSubScope

Scope NewSubScope(
  const string & child_scope_name
) const 

Retorne um novo escopo.

As operações criadas com este escopo terão name/child_scope_name como prefixo. O nome real será exclusivo no escopo atual. Todas as outras propriedades são herdadas do escopo atual. Se child_scope_name estiver vazio, / será omitido.

Escopo

 Scope(
  const Scope & other
)

ToGraphDef

Status ToGraphDef(
  GraphDef *gdef
) const 

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

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

Atualizar o status

void UpdateStatus(
  const Status & s
) const 

Atualize o status neste escopo.

Nota: O objeto 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 no escopo retornado terão seus dispositivos atribuídos definidos como assigned_device .

ComControlDependências

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

Retorne 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 do vetor control_deps e as dependências de controle do escopo atual.

ComControlDependências

Scope WithControlDependencies(
  const Output & control_dep
) const 

Igual ao acima, 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 

Retorne um novo escopo.

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

WithKernelLabel

Scope WithKernelLabel(
  const string & kernel_label
) const 

Retorne um novo escopo.

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

WithNoControlDependencies

Scope WithNoControlDependencies() const 

Retorne um novo escopo.

Todas as operações criadas no escopo retornado não terão dependências de controle de outras operações.

ComOpName

Scope WithOpName(
  Ty... fragments
) const 

Retorne 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 no escopo retornado terão seu atributo _XlaCluster definido como xla_cluster .

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

status

Status status() const 

~Escopo

 ~Scope()

Funções estáticas públicas

NovoRootScope

Scope NewRootScope()

Retorne um novo escopo.

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