flux tensoriel : : opérations : : LotVersEspaceND

#include <array_ops.h>

BatchToSpace pour les tenseurs ND de type T.

Résumé

Cette opération remodèle la dimension "batch" 0 en M + 1 dimensions de forme block_shape + [batch] , entrelace ces blocs dans la grille définie par les dimensions spatiales [1, ..., M] , pour obtenir un résultat avec le même rang que l’entrée. Les dimensions spatiales de ce résultat intermédiaire sont ensuite éventuellement recadrées en fonction des crops pour produire le résultat. C'est l'inverse de SpaceToBatch. Voir ci-dessous pour une description précise.

Arguments :

  • scope : un objet Scope
  • entrée : ND avec forme input_shape = [batch] + spatial_shape + remaining_shape , où spatial_shape a M dimensions.
  • block_shape : 1-D avec la forme [M] , toutes les valeurs doivent être >= 1.
  • cultures : 2-D avec la forme [M, 2] , toutes les valeurs doivent être >= 0. crops[i] = [crop_start, crop_end] spécifie la quantité à recadrer à partir de la dimension d'entrée i + 1 , qui correspond à la dimension spatiale i . Il est nécessaire que crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1] .

Cette opération équivaut aux étapes suivantes :

  1. Remodeler input pour reshaped la forme : [block_shape[0], ..., block_shape[M-1], batch / prod(block_shape), input_shape[1], ..., input_shape[N-1]]
  2. Permutez les dimensions de reshaped pour produire une forme permuted [batch / prod(block_shape),input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1],input_shape[M+1], ..., forme_entrée[N-1]]
  3. Remodeler permuted pour produire reshaped_permuted de forme [batch / prod(block_shape),input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1],input_shape[M+1], .. ., forme_entrée[N-1]]
  4. Recadrez le début et la fin des dimensions [1, ..., M] de reshaped_permuted en fonction des crops pour produire la sortie de forme : [batch / prod(block_shape),input_shape[1] * block_shape[0] - crop[0, 0] - cultures[0,1], ..., input_shape[M] * block_shape[M-1] - cultures[M-1,0] - cultures[M-1,1],input_shape[M+1] , ..., forme_entrée[N-1]]

Quelques exemples :

(1) Pour l'entrée suivante de shape [4, 1, 1, 1] , block_shape = [2, 2] et crops = [[0, 0], [0, 0]] :

[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]

Le tenseur de sortie a la forme [1, 2, 2, 1] et la valeur :

x = [[[[1], [2]], [[3], [4]]]]

(2) Pour l'entrée suivante de shape [4, 1, 1, 3] , block_shape = [2, 2] et crops = [[0, 0], [0, 0]] :

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

Le tenseur de sortie a la forme [1, 2, 2, 3] et la valeur :

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

(3) Pour l'entrée suivante de shape [4, 2, 2, 1] , block_shape = [2, 2] et crops = [[0, 0], [0, 0]] :

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

Le tenseur de sortie a la forme [1, 4, 4, 1] et la valeur :

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

(4) Pour l'entrée suivante de shape [8, 1, 3, 1] , block_shape = [2, 2] et crops = [[0, 0], [2, 0]] :

x = [[[[0], [1], [3]]], [[[0], [9], [11]]],
     [[[0], [2], [4]]], [[[0], [10], [12]]],
     [[[0], [5], [7]]], [[[0], [13], [15]]],
     [[[0], [6], [8]]], [[[0], [14], [16]]]]

Le tenseur de sortie a la forme [2, 2, 4, 1] et la valeur :

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

Retours :

  • Output : Le tenseur de sortie.

Constructeurs et Destructeurs

BatchToSpaceND (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input block_shape, :: tensorflow::Input crops)

Attributs publics

operation
output

Fonctions publiques

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

Attributs publics

opération

Operation operation

sortir

::tensorflow::Output output

Fonctions publiques

LotVersEspaceND

 BatchToSpaceND(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input block_shape,
  ::tensorflow::Input crops
)

nœud

::tensorflow::Node * node() const 

opérateur :: tensorflow :: Entrée

 operator::tensorflow::Input() const 

opérateur :: tensorflow :: Sortie

 operator::tensorflow::Output() const