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) | Scope & |
status () const | Status |
Funções estáticas públicas | |
|---|---|
NewRootScope () | Retorna um novo escopo. |
Funções públicas
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
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".