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, será 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 | 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) | Scope & |
status () const |
Funções estáticas públicas | |
---|---|
NewRootScope () | Retorne um novo escopo. |
Funções públicas
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.
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.
Status de atualização
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
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".