flux tensoriel : : opérations : : ProfondeurVersEspace
#include <array_ops.h>
DepthToSpace pour les tenseurs de type T.
Résumé
Réorganise les données de la profondeur en blocs de données spatiales. Il s'agit de la transformation inverse de SpaceToDepth. Plus précisément, cette opération génère une copie du tenseur d'entrée où les valeurs de la dimension depth
sont déplacées dans des blocs spatiaux vers les dimensions height
et width
. L'attr block_size
indique la taille du bloc d'entrée et la manière dont les données sont déplacées.
- Des morceaux de données de taille
block_size * block_size
à partir de la profondeur sont réorganisés en blocs ne se chevauchant pas de tailleblock_size x block_size
- La largeur du tenseur de sortie est
input_depth * block_size
, tandis que la hauteur estinput_height * block_size
. - Les coordonnées Y, X dans chaque bloc de l'image de sortie sont déterminées par la composante d'ordre élevé de l'index du canal d'entrée.
- La profondeur du tenseur d'entrée doit être divisible par
block_size * block_size
.
L'attr data_format
spécifie la disposition des tenseurs d'entrée et de sortie avec les options suivantes : "NHWC": [ batch, height, width, channels ]
"NCHW": [ batch, channels, height, width ]
"NCHW_VECT_C": qint8 [ batch, channels / 4, height, width, 4 ]
Il est utile de considérer l'opération comme une transformation d'un Tensor 6-D. Par exemple, pour data_format = NHWC, chaque élément du tenseur d'entrée peut être spécifié via 6 coordonnées, classées par importance décroissante de la disposition de la mémoire comme : n,iY,iX,bY,bX,oC (où n=index du lot, iX, iY signifie X ou coordonnées Y dans l'image d'entrée, bX, bY signifie coordonnées dans le bloc de sortie, oC signifie canaux de sortie). La sortie serait l'entrée transposée dans la disposition suivante : n,iY,bY,iX,bX,oC
Cette opération est utile pour redimensionner les activations entre convolutions (mais en conservant toutes les données), par exemple au lieu de les regrouper. Il est également utile pour former des modèles purement convolutifs.
Par exemple, étant donné une entrée de forme [1, 1, 1, 4]
, data_format = "NHWC" et block_size = 2 :
x = [[[[1, 2, 3, 4]]]]
This operation will output a tensor of shape
[1, 2, 2, 1]
:
[[[[1], [2]], [[3], [4]]]]Ici, l'entrée a un lot de 1 et chaque élément du lot a la forme
[1, 1, 4]
, la sortie correspondante aura 2x2 éléments et aura une profondeur de 1 canal (1 =4 / (block_size * block_size)
). La forme de l'élément de sortie est[2, 2, 1]
.Pour un tenseur d'entrée de plus grande profondeur, ici de forme
[1, 1, 1, 12]
, par exemple
x = [[[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]]]Cette opération, pour une taille de bloc de 2, renverra le tenseur de forme suivant
[1, 2, 2, 3]
[[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]]
Similarly, for the following input of shape
[1 2 2 4]
, and a block size of 2:
x = [[[[1, 2, 3, 4], [5, 6, 7, 8]], [[9, 10, 11, 12], [13, 14, 15, 16]]]]l'opérateur renverra le tenseur de forme suivant
[1 4 4 1]
:
x = [[[ [1], [2], [5], [6]], [ [3], [4], [7], [8]], [ [9], [10], [13], [14]], [ [11], [12], [15], [16]]]]
Arguments:
- scope: A Scope object
- block_size: The size of the spatial block, same as in Space2Depth.
Returns:
Output
: The output tensor.
Constructors and Destructors |
|
---|---|
DepthToSpace(const ::tensorflow::Scope & scope, ::tensorflow::Input input, int64 block_size)
|
|
DepthToSpace(const ::tensorflow::Scope & scope, ::tensorflow::Input input, int64 block_size, const DepthToSpace::Attrs & attrs)
|
Public attributes |
|
---|---|
operation
|
|
output
|
Public functions |
|
---|---|
node() const
|
::tensorflow::Node *
|
operator::tensorflow::Input() const
|
|
operator::tensorflow::Output() const
|
|
Public static functions |
|
---|---|
DataFormat(StringPiece x)
|
Structs |
|
---|---|
tensorflow:: |
Optional attribute setters for DepthToSpace. |
Public attributes
operation
Operation operation
sortir
::tensorflow::Output output
Fonctions publiques
ProfondeurVersEspace
DepthToSpace( const ::tensorflow::Scope & scope, ::tensorflow::Input input, int64 block_size )
ProfondeurVersEspace
DepthToSpace( const ::tensorflow::Scope & scope, ::tensorflow::Input input, int64 block_size, const DepthToSpace::Attrs & attrs )
nœud
::tensorflow::Node * node() const
opérateur :: tensorflow :: Entrée
operator::tensorflow::Input() const
opérateur :: tensorflow :: Sortie
operator::tensorflow::Output() const
Fonctions statiques publiques
Format de données
Attrs DataFormat( StringPiece x )