SpaceToBatchNd

clase final pública SpaceToBatchNd

SpaceToBatch para tensores ND de tipo T.

Esta operación divide las dimensiones "espaciales" `[1, ..., M]` de la entrada en una cuadrícula de bloques de forma `block_shape`, e intercala estos bloques con la dimensión" lote "(0) de modo que en la salida , las dimensiones espaciales "[1, ..., M]" corresponden a la posición dentro de la cuadrícula, y la dimensión del lote combina la posición dentro de un bloque espacial y la posición original del lote. Antes de la división en bloques, las dimensiones espaciales de la entrada se rellenan opcionalmente con ceros de acuerdo con los "rellenos". Consulte a continuación para obtener una descripción precisa.

Métodos públicos

Salida <T>
asOutput ()
Devuelve el identificador simbólico de un tensor.
estático <T, U extiende el número, V extiende el número> SpaceToBatchNd <T>
crear ( Alcance alcance, operando <T> de entrada, operando <U> blockShape, operando <V> paddings)
Método de fábrica para crear una clase que envuelva una nueva operación SpaceToBatchNd.
Salida <T>
salida ()

Métodos heredados

Métodos públicos

Salida pública <T> asOutput ()

Devuelve el identificador simbólico de un tensor.

Las entradas a las operaciones de TensorFlow son salidas de otra operación de TensorFlow. Este método se utiliza para obtener un identificador simbólico que representa el cálculo de la entrada.

public static SpaceToBatchNd <T> crear ( Alcance alcance, operando <T> de entrada, operando <U> blockShape, operando <V> paddings)

Método de fábrica para crear una clase que envuelva una nueva operación SpaceToBatchNd.

Parámetros
alcance alcance actual
aporte ND con forma `input_shape = [batch] + space_shape + left_shape`, donde espacial_shape tiene dimensiones` M`.
blockShape 1-D con forma `[M]`, todos los valores deben ser> = 1.
acolchados 2-D con forma `[M, 2]`, todos los valores deben ser> = 0. `paddings [i] = [pad_start, pad_end]` especifica el relleno para la dimensión de entrada `i + 1`, que corresponde a la dimensión espacial `yo`. Se requiere que `block_shape [i]` divida `input_shape [i + 1] + pad_start + pad_end`.

Esta operación es equivalente a los siguientes pasos:

1. Rellene con ceros el inicio y el final de las dimensiones "[1, ..., M]" de la entrada de acuerdo con "paddings" para producir "padded" de forma "padded_shape".

2. Cambie la forma de "padded" a "rehaped_padded":

[batch] + [padded_shape [1] / block_shape [0], block_shape [0], ..., padded_shape [M] / block_shape [M-1], block_shape [M-1]] + remanente

3. Permutar las dimensiones de `rehaped_padded` para producir` permuted_reshaped_padded` de forma:

block_shape + [lote] + [padded_shape [1] / block_shape [0], ..., padded_shape [M] / block_shape [M-1]] + forma_restante

4. Reforma `permuted_reshaped_padded` para aplanar` block_shape` en la dimensión de lote, produciendo un tensor de salida de forma:

[batch * prod (block_shape)] + [padded_shape [1] / block_shape [0], ..., padded_shape [M] / block_shape [M-1]] + forma_restante

Algunos ejemplos:

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

x = [[[[1], [2]], [[3], [4]]]]
 
El tensor de salida tiene forma `[4, 1, 1, 1]` y valor:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
 
(2) Para la siguiente entrada de forma `[1, 2, 2, 3]`, `block_shape = [2, 2] `, y` paddings = [[0, 0], [0, 0]] `:
x = [[[[1, 2, 3], [4, 5, 6]],
       [[7, 8, 9], [10, 11, 12]]]]
 
El tensor de salida tiene forma` [4, 1, 1, 3] `y valor:
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
 
(3) Para la siguiente entrada de shape `[1, 4, 4, 1]`, `block_shape = [2, 2]`, y `paddings = [[0, 0], [0, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]],
       [[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
El tensor de salida tiene forma `[ 4, 2, 2, 1] `y valor:
x = [[[[1], [3]], [[9], [11]]],
      [[[2], [4]], [[10], [12]]],
      [[[5], [7]], [[13], [15]]],
      [[[6], [8]], [[14], [16]]]]
 
(4) Para la siguiente entrada de forma` [2, 2, 4, 1] `, block_shape =` [2, 2] `, y rellenos =` [[ 0, 0], [2, 0]] `:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]]],
      [[[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
El tensor de salida tiene forma` [8, 1, 3, 1] `y valor:
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]]]]
 
Entre otras, esta operación es útil para reducir la convolución atroz en convolución regular.
Devoluciones
  • una nueva instancia de SpaceToBatchNd

salida pública <T> salida ()