tensorflow:: ops:: BatchToSpaceND

#include <array_ops.h>

BatchToSpace para tensores ND de tipo T.

Resumen

Esta operación transforma la dimensión 0 del lote en M + 1 dimensiones con forma block_shape + [batch] , intercalando estos bloques en la cuadrícula definida por las dimensiones espaciales [1, ..., M] , para obtener un resultado con el mismo rango que la entrada. Las dimensiones espaciales de este resultado intermedio se recortan opcionalmente según crops para producir la salida. Esto es lo contrario de SpaceToBatch. Consulte a continuación una descripción detallada.

Argumentos:

  • ámbito: Un objeto de ámbito
  • entrada: ND con forma input_shape = [batch] + spatial_shape + remaining_shape , donde spatial_shape tiene M dimensiones.
  • block_shape: 1-D con forma [M] , todos los valores deben ser >= 1.
  • cultivos: 2-D con forma [M, 2] , todos los valores deben ser >= 0. crops[i] = [crop_start, crop_end] especifica la cantidad a recortar de la dimensión de entrada i + 1 , que corresponde a la dimensión espacial i . Se requiere que crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1] .

Esta operación es equivalente a los siguientes pasos:

  1. Remodelar input a una forma reshaped : [block_shape[0], ..., block_shape[M-1], batch / prod(block_shape), input_shape[1], ..., input_shape[N-1]]
  2. Permutar las dimensiones de los reshaped para producir permuted de la forma [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. Remodelar permuted para producir reshaped_permuted de forma [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. Recorta el inicio y el final de las dimensiones [1, ..., M] de reshaped_permuted según crops para producir la salida de forma: [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]]

Algunos ejemplos:

(1) Para la siguiente entrada de forma [4, 1, 1, 1] , block_shape = [2, 2] y crops = [[0, 0], [0, 0]] :

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

El tensor de salida tiene forma [1, 2, 2, 1] y valor:

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

(2) Para la siguiente entrada de forma [4, 1, 1, 3] , block_shape = [2, 2] y crops = [[0, 0], [0, 0]] :

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

El tensor de salida tiene forma [1, 2, 2, 3] y valor:

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

(3) Para la siguiente entrada de forma [4, 2, 2, 1] , block_shape = [2, 2] y crops = [[0, 0], [0, 0]] :

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

El tensor de salida tiene forma [1, 4, 4, 1] y valor:

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

(4) Para la siguiente entrada de forma [8, 1, 3, 1] , block_shape = [2, 2] y 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]]]]

El tensor de salida tiene forma [2, 2, 4, 1] y valor:

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

Devoluciones:

  • Output : El tensor de salida.

Constructores y destructores

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

Atributos públicos

operation
output

Funciones públicas

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

Atributos públicos

operación

Operation operation

producción

::tensorflow::Output output

Funciones públicas

BatchToSpaceND

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

nodo

::tensorflow::Node * node() const 

operador::tensorflow::Input

 operator::tensorflow::Input() const 

operador::tensorflow::Salida

 operator::tensorflow::Output() const