przepływ tensorowy:: ops:: Głębia do przestrzeni
#include <array_ops.h>
DepthToSpace dla tensorów typu T.
Streszczenie
Przestawia dane z głębi na bloki danych przestrzennych. Jest to odwrotna transformacja SpaceToDepth. Mówiąc dokładniej, ta operacja generuje kopię tensora wejściowego, w którym wartości z wymiaru depth
są przenoszone w blokach przestrzennych do wymiarów height
i width
. Atrybut block_size
wskazuje rozmiar bloku wejściowego i sposób przenoszenia danych.
- Kawałki danych o rozmiarze
block_size * block_size
z głębokości są układane w nienakładające się bloki o rozmiarzeblock_size x block_size
- Szerokość tensora wyjściowego to
input_depth * block_size
, natomiast wysokość toinput_height * block_size
. - Współrzędne Y, X w każdym bloku obrazu wyjściowego są określane przez składową wyższego rzędu indeksu kanału wejściowego.
- Głębokość tensora wejściowego musi być podzielna przez
block_size * block_size
.
Atrybut data_format
określa układ tensorów wejściowych i wyjściowych za pomocą następujących opcji: „NHWC”: [ batch, height, width, channels ]
„NCHW”: [ batch, channels, height, width ]
„NCHW_VECT_C”: qint8 [ batch, channels / 4, height, width, 4 ]
Warto rozważyć tę operację jako transformację tensora 6-D. np. dla format_danych = NHWC, każdy element tensora wejściowego można określić za pomocą 6 współrzędnych, uporządkowanych według malejącego znaczenia układu pamięci jako: n,iY,iX,bY,bX,oC (gdzie n=indeks wsadowy, iX, iY oznacza X lub Y w obrazie wejściowym, bX, bY oznaczają współrzędne w bloku wyjściowym, oC oznacza kanały wyjściowe). Dane wyjściowe będą danymi wejściowymi przetransponowanymi do następującego układu: n,iY,bY,iX,bX,oC
Ta operacja jest przydatna do zmiany rozmiaru aktywacji pomiędzy splotami (ale przy zachowaniu wszystkich danych), np. zamiast łączenia. Jest również przydatny do uczenia modeli czysto splotowych.
Na przykład, biorąc pod uwagę dane wejściowe kształtu [1, 1, 1, 4]
, data_format = "NHWC" i block_size = 2:
x = [[[[1, 2, 3, 4]]]]
This operation will output a tensor of shape
[1, 2, 2, 1]
:
Tutaj wejście ma partię 1, a każdy element partii ma kształt
[1, 1, 4]
, odpowiednie wyjście będzie miało 2x2 elementy i będzie miało głębokość 1 kanału (1 =4 / (block_size * block_size)
). Kształt elementu wyjściowego to[2, 2, 1]
.Dla tensora wejściowego o większej głębokości, tutaj o kształcie
[1, 1, 1, 12]
, np.
Ta operacja, dla bloku o rozmiarze 2, zwróci następujący tensor kształtu
[1, 2, 2, 3]