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 )