tensorflow:: Alcance
#include <scope.h>
Um objeto Scope
representa um conjunto de operações TensorFlow relacionadas 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 op obtêm um objeto Scope como um primeiro argumento obrigatório e o op construído adquire as propriedades no 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 de nomes para 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 . Isso cria alguns recursos que são compartilhados por todos os escopos filho que herdam desse 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 precisam verificar o status do escopo chamando o método ok() antes de prosseguir com a construção do op.
Segurança do fio:
Um objeto Scope
NÃO é thread-safe. Threads não podem chamar simultaneamente funções op-constructor 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 | Retornar um novo escopo. |
ColocateWith (const Output & out) const | Função de conveniência para acima. |
ExitOnError () const | Retornar 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 | Retornar 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 | Retornar um novo escopo. |
WithControlDependencies (const Output & control_dep) const | O mesmo que acima, mas conveniente para adicionar dependência de controle na operação que produz a saída control_dep. |
WithDevice (const string & device) const | Retornar um novo escopo. |
WithKernelLabel (const string & kernel_label) const | Retornar um novo escopo. |
WithNoControlDependencies () const | Retornar um novo escopo. |
WithOpName (Ty... fragments) const | Retornar 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 () | Retornar um novo escopo. |
Funções públicas
Colocar com
Scope ColocateWith( const Operation & op ) const
Retornar um novo escopo.
Todas as operações criadas no escopo retornado serão colocadas no dispositivo onde a operação é colocada. NOTA: Esta função destina-se a usar bibliotecas internas apenas para controlar o posicionamento de operações nos 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
Retornar um novo escopo.
As funções op-constructor 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.
GetCompositeOpScopes
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.
NovoSubescopo
Scope NewSubScope( const string & child_scope_name ) const
Retornar 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, o /
será omitido.
Alcance
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.
Observação: o objeto de status é compartilhado entre todos os filhos desse escopo. Se o status resultante não for Status::OK() e exit_on_error_ estiver definido neste escopo, essa 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
.
Com dependências de controle
Scope WithControlDependencies( const gtl::ArraySlice< Operation > & control_deps ) const
Retornar 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.
Com dependências de controle
Scope WithControlDependencies( const Output & control_dep ) const
O mesmo que 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
Retornar 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
Retornar um novo escopo.
Todas as operações criadas com o novo escopo terão kernel_label como valor para seu atributo '_kernel';
WithNoControlDependências
Scope WithNoControlDependencies() const
Retornar um novo escopo.
Todas as operações criadas no escopo retornado não terão dependências de controle em outras operações.
WithOpName
Scope WithOpName( Ty... fragments ) const
Retornar um novo escopo.
Todas as operações criadas dentro do escopo retornado terão nomes no formato name/StrCat(fragments...)[_suffix]
WithXlaCluster
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
graph_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()
Retornar um novo escopo.
Isso cria um novo gráfico e todas as operações construídas nesse gráfico devem usar o objeto retornado como escopo "raiz".