tensorflow:: ops:: TensorArrayGrad
#include <data_flow_ops.h>Tworzy tablicę TensorArray służącą do przechowywania gradientów wartości w danym uchwycie.
Streszczenie
Jeśli dany gradient TensorArray już istnieje, zwraca odwołanie do niego.
Blokuje rozmiar oryginalnego obiektu TensorArray , wyłączając flagę rozmiaru dynamicznego.
Uwaga dotycząca przepływu wejściowego:
Uchwyt flow_in wymusza wykonanie wyszukiwania gradientowego dopiero po wykonaniu pewnych innych operacji. Na przykład, gdy obiekt TensorArray forward ma dynamiczny rozmiar, operacje zapisu do tego obiektu mogą zmienić jego rozmiar. Obiekt TensorArray gradientu ma rozmiar statyczny, zależny od rozmiaru obiektu TensorArray forward podczas wykonywania tej operacji. Ponadto, rozmiar obiektu TensorArray forward jest zamrażany przez to wywołanie. W rezultacie przepływ jest używany do zapewnienia, że wywołanie w celu wygenerowania obiektu TensorArray gradientu nastąpi dopiero po wykonaniu wszystkich operacji zapisu.
W przypadku tablic TensorArray o dynamicznym rozmiarze, obliczenia gradientu powinny być wykonywane tylko w przypadku operacji odczytu, które zostały połączone łańcuchowo za pomocą przepływu i wykonane dopiero po wykonaniu wszystkich operacji zapisu. W ten sposób ostateczny rozmiar tablicy TensorArray jest znany w momencie wywołania tej operacji.
Uwaga dotycząca atrybutu source:
Wywołania gradientów TensorArray używają obiektu akumulatora TensorArray . Jeśli w tej samej sesji obliczonych i uruchomionych zostanie wiele gradientów, wiele węzłów gradientu może przypadkowo przepłynąć przez ten sam akumulator TensorArray . Powoduje to podwójne zliczanie i zazwyczaj przerywa przepływ gradientu TensorArray .
Rozwiązaniem jest zidentyfikowanie, w którym wywołaniu gradientu wywoływany jest ten konkretny gradient TensorArray . Odbywa się to poprzez identyfikację unikalnego ciągu znaków (np. „gradients”, „gradients_1” itd.) z nazwy gradientu wejściowego Tensor . Ten ciąg znaków jest używany jako sufiks podczas tworzenia obiektu gradientu TensorArray (atrybut source ).
source atrybutu jest dodawane jako sufiks do nazwy tablicy TensorArray podczas wykonywania operacji tworzenia/wyszukiwania, dzięki czemu każde oddzielne obliczenie gradientu otrzymuje własny akumulator TensorArray .
Argumenty:
- zakres: obiekt zakresu
- uchwyt: Uchwyt do tablicy TensorArray skierowanej do przodu.
- flow_in: Skalar zmiennoprzecinkowy wymuszający poprawne łączenie operacji.
- źródło: ciąg źródłowy gradientu, używany do określenia, który gradient TensorArray ma zostać zwrócony.
Zwroty:
Konstruktory i destruktory | |
|---|---|
TensorArrayGrad (const :: tensorflow::Scope & scope, :: tensorflow::Input handle, :: tensorflow::Input flow_in, StringPiece source) |
Atrybuty publiczne | |
|---|---|
flow_out | |
grad_handle | |
operation | |
Atrybuty publiczne
przepływ_wyjściowy
::tensorflow::Output flow_out
uchwyt_grad
::tensorflow::Output grad_handle
działanie
Operation operation
Funkcje publiczne
TensorArrayGrad
TensorArrayGrad( const ::tensorflow::Scope & scope, ::tensorflow::Input handle, ::tensorflow::Input flow_in, StringPiece source )