flujo tensor:: operaciones:: Lote al espacioND
#include <array_ops.h>
BatchToSpace para tensores ND de tipo T.
Resumen
Esta operación reforma la dimensión "lote" 0 en M + 1
dimensiones de forma block_shape + [batch]
, entrelaza estos bloques nuevamente 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 el resultado. Esto es lo contrario de SpaceToBatch. Consulte a continuación para obtener una descripción precisa.
Argumentos:
- alcance: un objeto de alcance
- entrada: ND con forma
input_shape = [batch] + spatial_shape + remaining_shape
, donde forma_espacial 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 entradai + 1
, que corresponde a la dimensión espaciali
. Se requiere quecrop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1]
.
Esta operación equivale a los siguientes pasos:
- Transformar
input
parareshaped
la forma: [block_shape[0], ..., block_shape[M-1], lote / prod(block_shape), input_shape[1], ..., input_shape[N-1]] - Permutar dimensiones de
reshaped
para producir formapermuted
[batch / prod(block_shape),input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1],input_shape[M+1], ..., forma_entrada[N-1]] - Reforma
permuted
para producirreshaped_permuted
de forma [batch / prod(block_shape),input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1],input_shape[M+1], .. ., forma_entrada[N-1]] - Recorte el inicio y el final de las dimensiones
[1, ..., M]
dereshaped_permuted
según loscrops
para producir la salida de forma: [batch / prod(block_shape),input_shape[1] * block_shape[0] - crop[0, 0] - cultivos[0,1], ..., forma_entrada[M] * forma_bloque[M-1] - cultivos[M-1,0] - cultivos[M-1,1],forma_entrada[M+1] , ..., forma_entrada[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
Lote al espacioND
BatchToSpaceND( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input block_shape, ::tensorflow::Input crops )
nodo
::tensorflow::Node * node() const
operador::tensorflow::Entrada
operator::tensorflow::Input() const
operador::tensorflow::Salida
operator::tensorflow::Output() const