Esta página foi traduzida pela API Cloud Translation.
Switch to English

tf.Graph

TensorFlow 1 versão Ver fonte no GitHub

Um cálculo TensorFlow, representado como um gráfico de fluxo de dados.

Usado nos cadernos

Usado nos tutoriais

Os gráficos são usados por tf.function s para representar cálculos da função. Cada gráfico contém um conjunto de tf.Operation objectos, que representam as unidades de computação; e tf.Tensor objetos, que representam as unidades de dados que fluem entre operações.

Usando gráficos directamente (preterido)

Um tf.Graph pode ser construído e utilizado directamente sem um tf.function , como era exigido na TensorFlow 1, mas esta é preterido e é recomendável usar um tf.function vez. Se um gráfico é usado directamente, outras classes de 1 TensorFlow preterido também são necessárias para executar o grafo, tal como um tf.compat.v1.Session .

Um gráfico padrão pode ser registrado com o tf.Graph.as_default gerente de contexto. Em seguida, as operações serão adicionados ao gráfico em vez de ser executado ansiosamente. Por exemplo:

 g = tf.Graph()
with g.as_default():
  # Define operations and tensors in `g`.
  c = tf.constant(30.0)
  assert c.graph is g
 

tf.compat.v1.get_default_graph() pode ser usado para obter o gráfico padrão.

Nota importante: Esta classe não é thread-safe para a construção de gráfico. Todas as operações devem ser criados a partir de um único segmento, ou sincronização externo deve ser fornecido. A menos que especificado em contrário, todos os métodos não são thread-safe.

A Graph instância suporta um número arbitrário de "coleções" que são identificados pelo nome. Por conveniência na construção de um grande gráfico, as coleções podem armazenar grupos de objetos relacionados: por exemplo, o tf.Variable usa uma coleção (chamados tf.GraphKeys.GLOBAL_VARIABLES ) para todas as variáveis que são criados durante a construção de um gráfico. O chamador pode definir coleções adicionais, especificando um novo nome.

building_function Retorna True sse este gráfico representa uma função.
collections Retorna os nomes das coleções conhecidas para este gráfico.
finalized Verdadeiro se este gráfico foi finalizado.
graph_def_versions As informações de versão GraphDef deste gráfico.

Para obter detalhes sobre o significado de cada versão, consulte GraphDef .

seed A semente aleatória de nível gráfico deste gráfico.
version Retorna um número de versão que aumenta à medida que ops são adicionados ao gráfico.

Note-se que este não está relacionado com as tf.Graph.graph_def_versions .

Métodos

add_to_collection

Ver fonte

Stores value na coleção com o dado name .

Nota que as coleções não são conjuntos, por isso, é possível adicionar um valor a uma coleção várias vezes.

args
name A chave para a coleção. O GraphKeys classe contém muitos nomes padrão para coleções.
value O valor para adicionar à coleção.

add_to_collections

Ver fonte

Lojas value nas coleções dadas por names .

Nota que as coleções não são conjuntos, por isso, é possível adicionar um valor a uma coleção várias vezes. Esta função garante que duplicatas em names são ignorados, mas não irá verificar se há associação pré-existente de value em qualquer uma das coleções em names .

names pode ser qualquer iterable, mas se names é uma corda, ele é tratado como um único nome da coleção.

args
names As chaves para as coleções para adicionar. O GraphKeys classe contém muitos nomes padrão para coleções.
value O valor para adicionar às coleções.

as_default

Ver fonte

Retorna um gerente de contexto que torna este Graph do gráfico padrão.

Este método deve ser usado se você quiser criar vários gráficos no mesmo processo. Por conveniência, um gráfico padrão mundial é fornecido, e todos os ops será adicionado a este gráfico se você não criar um novo gráfico explicitamente.

Utilize este método com o with palavra-chave para especificar que ops criados dentro do escopo de um bloco deve ser adicionado a este gráfico. Neste caso, uma vez que o âmbito da with é encerrado, o gráfico padrão anterior é definido novamente como padrão. Há uma pilha, por isso é ok para ter vários níveis aninhados de as_default chamadas.

O gráfico padrão é uma propriedade do thread atual. Se você criar um novo segmento, e deseja usar o gráfico padrão no esse segmento, você deve adicionar explicitamente um with g.as_default(): em função desse segmento.

Os seguintes exemplos de código são equivalentes:

 # 1. Using Graph.as_default():
g = tf.Graph()
with g.as_default():
  c = tf.constant(5.0)
  assert c.graph is g

# 2. Constructing and making default:
with tf.Graph().as_default() as g:
  c = tf.constant(5.0)
  assert c.graph is g
 

Se a execução ansioso está habilitado ops criados sob este gestor de contexto será adicionado ao gráfico, em vez de executadas ansiosamente.

Devoluções
Um gerente de contexto para a utilização deste gráfico como o gráfico padrão.

as_graph_def

Ver fonte

Retorna uma serializado GraphDef representação deste gráfico.

O serializados GraphDef pode ser importado para outro Graph (usando tf.import_graph_def ) ou utilizado com o API Sessão C ++ .

Este método é thread-safe.

args
from_version Opcional. Se isso for definido, retorna uma GraphDef contendo apenas os nós que foram adicionados a este gráfico desde a sua version propriedade tinha o valor dado.
add_shapes Se for verdade, acrescenta um "_output_shapes" lista attr para cada nó com as formas inferidos de cada uma de suas saídas.

Devoluções
Um GraphDef tampão protocolo.

Levanta
ValueError Se o graph_def seria muito grande.

as_graph_element

Ver fonte

Retorna o objeto referido por obj , como uma Operation ou Tensor .

Esta função valida que obj representa um elemento deste gráfico, e dá uma mensagem de erro informativo se não é.

Esta função é a forma canônica para obter / validar um objeto de um dos tipos permitidos a partir de uma referência argumento externo na API Session.

Este método pode ser chamado em simultâneo de múltiplos segmentos.

args
obj A Tensor , uma Operation , ou o nome de um tensor ou operação. Também pode ser qualquer objeto com um _as_graph_element() método que retorna um valor de um desses tipos. Nota: _as_graph_element será chamado dentro bloqueio do gráfico e assim não pode modificar o gráfico.
allow_tensor Se for verdade, obj pode se referir a um Tensor .
allow_operation Se for verdade, obj pode se referir a uma Operation .

Devoluções
O Tensor ou Operation no gráfico correspondente ao obj .

Levanta
TypeError Se obj não é um tipo apoiamos a tentativa de converter para tipos.
ValueError Se obj é de um tipo adequado, mas inválido. Por exemplo, uma cadeia inválida.
KeyError Se obj não é um objecto no gráfico.

clear_collection

Ver fonte

Limpa todos os valores em uma coleção.

args
name A chave para a coleção. O GraphKeys classe contém muitos nomes padrão para coleções.

colocate_with

Ver fonte

Retorna um gerente de contexto que especifica um op para colocate com.

Por exemplo:

 a = tf.Variable([1.0])
with g.colocate_with(a):
  b = tf.constant(1.0)
  c = tf.add(a, b)
 

b e c irá sempre ser colocados com a , não importa onde a é eventualmente colocado.

Se op é None então ignore_existing deve ser True e o novo escopo repõe todas as restrições de colocation e do dispositivo.

args
op O op para colocate todos ops criados com ou None .
ignore_existing Se for verdade, só se aplica colocation deste op dentro do contexto, em vez de aplicar todas as propriedades de colocation na pilha. Se op é None , esse valor deve ser True .

Levanta
ValueError se op for Nenhum, mas ignore_existing é False.

Rendimentos:

Um gerente de contexto que especifica o op com que colocate ops recém-criados.

container

Ver fonte

Retorna um gerente de contexto que especifica o recipiente recurso de usar.

operações com estado, como variáveis ​​e filas, podem manter seus estados em dispositivos para que eles possam ser compartilhados por vários processos. Um recipiente de recursos é um nome de seqüência em que estas operações stateful são rastreadas. Esses recursos podem ser liberados ou limpo com tf.Session.reset() .

Por exemplo:

 with g.container('experiment0'):
  # All stateful Operations constructed in this context will be placed
  # in resource container "experiment0".
  v1 = tf.Variable([1.0])
  v2 = tf.Variable([2.0])
  with g.container("experiment1"):
    # All stateful Operations constructed in this context will be
    # placed in resource container "experiment1".
    v3 = tf.Variable([3.0])
    q1 = tf.queue.FIFOQueue(10, tf.float32)
  # All stateful Operations constructed in this context will be
  # be created in the "experiment0".
  v4 = tf.Variable([4.0])
  q1 = tf.queue.FIFOQueue(20, tf.float32)
  with g.container(""):
    # A