tensorflow::ops::TensorArrayGrad

#include <data_flow_ops.h>

Cria um TensorArray para armazenar os gradientes dos valores no identificador fornecido.

Resumo

Se o gradiente do TensorArray fornecido já existir, retorna uma referência a ele.

Bloqueia o tamanho do TensorArray original desativando seu sinalizador de tamanho dinâmico.

Uma observação sobre o fluxo de entrada:

O manipulador `flow_in` força a execução da busca de gradiente somente após a conclusão de determinadas outras operações. Por exemplo, quando o TensorArray de propagação direta tem tamanho dinâmico, as escritas nesse TensorArray podem redimensioná-lo. O TensorArray de gradiente tem tamanho estático, baseado no tamanho do TensorArray de propagação direta, no momento da execução desta operação. Além disso, o tamanho do TensorArray de propagação direta é congelado por esta chamada. Consequentemente, o fluxo é utilizado para garantir que a chamada para gerar o TensorArray de gradiente ocorra somente após a conclusão de todas as escritas.

No caso de TensorArrays de tamanho dinâmico, o cálculo do gradiente deve ser realizado apenas em operações de leitura que, por sua vez, foram encadeadas via fluxo para ocorrerem somente após a execução de todas as escritas. Dessa forma, o tamanho final do TensorArray subsequente é conhecido quando essa operação é chamada.

Uma observação sobre o atributo de origem:

As chamadas de gradiente do TensorArray usam um objeto TensorArray acumulador. Se vários gradientes forem calculados e executados na mesma sessão, os múltiplos nós de gradiente podem acidentalmente passar pelo mesmo TensorArray acumulador. Isso causa uma contagem dupla e geralmente interrompe o fluxo de gradiente do TensorArray .

A solução consiste em identificar em qual chamada de gradiente este gradiente TensorArray específico está sendo invocado. Isso é feito identificando uma string única (por exemplo, "gradients", "gradients_1", ...) no nome do Tensor de gradiente de entrada. Essa string é usada como sufixo ao criar o objeto de gradiente TensorArray aqui (o atributo source ).

O atributo source é adicionado como um sufixo ao nome do TensorArray de encaminhamento ao realizar a criação/busca, de forma que cada cálculo de gradiente separado obtenha seu próprio acumulador TensorArray .

Argumentos:

  • escopo: Um objeto de escopo
  • handle: O identificador do TensorArray seguinte.
  • flow_in: Um escalar de ponto flutuante que impõe o encadeamento correto de operações.
  • Fonte: A string de origem do gradiente, usada para decidir qual TensorArray de gradiente retornar.

Devoluções:

Construtores e Destrutores

TensorArrayGrad (const :: tensorflow::Scope & scope, :: tensorflow::Input handle, :: tensorflow::Input flow_in, StringPiece source)

Atributos públicos

flow_out
grad_handle
operation

Atributos públicos

fluxo_saída

::tensorflow::Output flow_out

identificador_grad

::tensorflow::Output grad_handle

operação

Operation operation

Funções públicas

TensorArrayGrad

 TensorArrayGrad(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input handle,
  ::tensorflow::Input flow_in,
  StringPiece source
)