Merci de vous être connecté à Google I/O. Voir toutes les sessions à la demande Regarder à la demande

tensorflow :: opérations :: DepthToSpace

#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 spécifiquement, cette opération produit une copie du tenseur d'entrée où les valeurs de la dimension de depth sont déplacées dans des blocs spatiaux vers les dimensions de height et de 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.

  • Les morceaux de données de taille block_size * block_size partir de la profondeur sont réorganisés en blocs non superposés de taille block_size x block_size
  • La largeur du tenseur de sortie est input_depth * block_size , tandis que la hauteur est input_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 supérieur de l'indice de 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 la 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, ordonnées en diminuant la signification de la disposition de la mémoire comme: n, iY, iX, bY, bX, oC (où n = indice de 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 à la disposition suivante: n, iY, bY, iX, bX, oC

Cette opération est utile pour redimensionner les activations entre les convolutions (mais en conservant toutes les données), par exemple au lieu de regrouper. Il est également utile pour la formation de 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 de 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] , p.ex.

x = [[[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]]]

Cette opération, pour une taille de bloc de 2, retournera 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 retournera 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:

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::ops::DepthToSpace::Attrs

Optional attribute setters for DepthToSpace.

Public attributes

operation

Operation operation

production

::tensorflow::Output output

Fonctions publiques

DepthToSpace

 DepthToSpace(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  int64 block_size
)

DepthToSpace

 DepthToSpace(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  int64 block_size,
  const DepthToSpace::Attrs & attrs
)

nœud

::tensorflow::Node * node() const 

operator :: tensorflow :: Input

 operator::tensorflow::Input() const 

operator :: tensorflow :: Output

 operator::tensorflow::Output() const 

Fonctions statiques publiques

DataFormat

Attrs DataFormat(
  StringPiece x
)