tensorflow::ops::BatchToSpaceND

#include <array_ops.h>

BatchToSpace pour les tenseurs ND de type T.

Résumé

Cette opération transforme la dimension « batch » 0 en M + 1 dimensions de forme block_shape + [batch] , puis entrelace ces blocs dans la grille définie par les dimensions spatiales [1, ..., M] afin d'obtenir un résultat de même rang que l'entrée. Les dimensions spatiales de ce résultat intermédiaire sont ensuite, en option, rognées selon crops pour produire la sortie. Il s'agit de l'opération inverse de SpaceToBatch. Voir ci-dessous pour une description détaillée.

Arguments :

  • portée : un objet Scope
  • entrée : ND avec la forme input_shape = [batch] + spatial_shape + remaining_shape , où spatial_shape a M dimensions.
  • block_shape: 1-D avec forme [M] , toutes les valeurs doivent être >= 1.
  • crops : 2D de forme [M, 2] , toutes les valeurs doivent être >= 0. crops[i] = [crop_start, crop_end] spécifie la quantité à rogner à partir de la dimension d'entrée i + 1 , qui correspond à la dimension spatiale i . Il est requis 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 : [block_shape[0], ..., block_shape[M-1], batch / prod(block_shape), input_shape[1], ..., input_shape[N-1]]
  2. Permuter les dimensions de reshaped pour produire permuted de forme [batch / prod(block_shape),input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1],input_shape[M+1], ..., input_shape[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], ..., input_shape[N-1]]
  4. Découpez les dimensions de début et de fin [1, ..., M] de reshaped_permuted selon crops pour produire la sortie de forme : [batch / prod(block_shape),input_shape[1] * block_shape[0] - crops[0,0] - crops[0,1], ..., input_shape[M] * block_shape[M-1] - crops[M-1,0] - crops[M-1,1],input_shape[M+1], ..., input_shape[N-1]]

Quelques exemples :

(1) Pour l'entrée suivante de forme [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 forme [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 forme [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 forme [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

BatchToSpaceND

 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