Aviso: esta API está obsoleta e será removida em uma versão futura do TensorFlow depois que a substituição estiver estável.

SpaceToBatchNd

classe final pública SpaceToBatchNd

SpaceToBatch para tensores ND do tipo T.

Esta operação divide as dimensões "espaciais" `[1, ..., M]` da entrada em uma grade de blocos de forma `block_shape`, e intercala esses blocos com a dimensão "lote" (0) de tal forma que na saída , as dimensões espaciais `[1, ..., M]` correspondem à posição dentro da grade e a dimensão do lote combina a posição dentro de um bloco espacial e a posição original do lote. Antes da divisão em blocos, as dimensões espaciais da entrada são opcionalmente preenchidas com zero de acordo com `paddings`. Veja abaixo uma descrição precisa.

Esta operação é equivalente aos seguintes passos:

1. Zero-pad no início e fim das dimensões `[1, ..., M]` da entrada de acordo com `paddings` para produzir `padded` de forma `padded_shape`.

2. Remodele `padded` para `reshaped_padded` da forma:

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

3. Permute as dimensões de `reshaped_padded` para produzir `permuted_reshaped_padded` de forma:

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

4. Remodele `permuted_reshaped_padded` para achatar `block_shape` na dimensão do lote, produzindo um tensor de saída de forma:

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

Alguns exemplos:

(1) Para a seguinte entrada de forma `[1, 2, 2, 1]`, `block_shape = [2, 2]` e `paddings = [[0, 0], [0, 0]]`:

x = [[[[1], [2]], [[3], [4]]]]
 
O tensor de saída tem forma `[4, 1, 1, 1]` e valor:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
 
(2) Para a seguinte entrada de forma `[1, 2, 2, 3]`, `block_shape = [ 2, 2]` e `paddings = [[0, 0], [0, 0]]`:
x = [[[[1, 2, 3], [4, 5, 6]],
       [[7, 8, 9], [10, 11, 12]]]]
 
O tensor de saída tem forma `[4, 1, 1, 3]` e valor:
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
 
(3) Para a seguinte entrada de forma `[1, 4, 4, 1]`, `block_shape = [2, 2]` e `paddings = [[0, 0], [0, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]],
       [[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
O tensor de saída tem forma `[4, 2, 2, 1]` e valor:
x = [[[[1], [3]], [[9], [11]]],
      [[[2], [4]], [[10], [12]]],
      [[[5], [7]], [[13], [15]]],
      [[[6], [8]], [[14], [16]]]]
 
(4) Para a seguinte entrada de forma `[2, 2, 4, 1]`, block_shape = `[ 2, 2]` e paddings = `[[0, 0], [2, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]]],
      [[[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
O tensor de saída tem forma `[8, 1, 3, 1]` e 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 outras, esta operação é útil para reduzir a convolução atrosa em convolução regular.

Métodos públicos

Saída <T>
comoSaída ()
Retorna o identificador simbólico de um tensor.
estático <T, U estende Número, V estende Número> SpaceToBatchNd <T>
create ( Escopo do escopo, entrada do Operando <T>, Forma do bloco do Operando <U>, Preenchimentos do Operando <V>)
Método de fábrica para criar uma classe que envolve uma nova operação SpaceToBatchNd.
Saída <T>
saída ()

Métodos Herdados

Métodos públicos

Public Output <T> asOutput ()

Retorna o identificador simbólico de um tensor.

As entradas para operações do TensorFlow são saídas de outra operação do TensorFlow. Este método é usado para obter um identificador simbólico que representa o cálculo da entrada.

public static SpaceToBatchNd <T> create ( Escopo do escopo, Operando <T> entrada, Operando <U> blockShape, Operando <V> preenchimentos)

Método de fábrica para criar uma classe que envolve uma nova operação SpaceToBatchNd.

Parâmetros
alcance escopo atual
entrada ND com forma `input_shape = [lote] + forma_espaço + forma_remanescente`, onde forma_espaço tem dimensões `M`.
forma de bloco 1-D com forma `[M]`, todos os valores devem ser >= 1.
acolchoamentos 2-D com forma `[M, 2]`, todos os valores devem ser >= 0. `paddings[i] = [pad_start, pad_end]` especifica o preenchimento para a dimensão de entrada `i + 1`, que corresponde à dimensão espacial `eu`. É necessário que `block_shape[i]` divida `input_shape[i + 1] + pad_start + pad_end`.
Devoluções
  • uma nova instância de SpaceToBatchNd

saída pública <T> saída ()