SpaceToBatchNd

classe finale pubblica SpaceToBatchNd

SpaceToBatch per tensori ND di tipo T.

Questa operazione divide le dimensioni "spaziali" "[1, ..., M]" dell'input in una griglia di blocchi di forma "block_shape" e intercala questi blocchi con la dimensione "batch" (0) in modo tale che nell'output , le dimensioni spaziali "[1, ..., M]" corrispondono alla posizione all'interno della griglia e la dimensione batch combina sia la posizione all'interno di un blocco spaziale che la posizione batch originale. Prima della divisione in blocchi, le dimensioni spaziali dell'input vengono facoltativamente riempite con zero secondo "padding". Vedi sotto per una descrizione precisa.

Metodi pubblici

Uscita <T>
comeuscita ()
Restituisce la maniglia simbolica di un tensore.
statico <T, U estende Numero, V estende Numero> SpaceToBatchNd <T>
create (ambito dell'ambito , input dell'operando <T>, forma del blocco dell'operando <U>, riempimenti dell'operando <V>)
Metodo factory per creare una classe che racchiude una nuova operazione SpaceToBatchNd.
Uscita <T>

Metodi ereditati

Metodi pubblici

Uscita pubblica <T> asOutput ()

Restituisce la maniglia simbolica di un tensore.

Gli input per le operazioni TensorFlow sono output di un'altra operazione TensorFlow. Questo metodo viene utilizzato per ottenere un handle simbolico che rappresenta il calcolo dell'input.

public static SpaceToBatchNd <T> create ( ambito ambito , input operando <T>, operando <U> blockShape, riempimenti operando <V>)

Metodo factory per creare una classe che racchiude una nuova operazione SpaceToBatchNd.

Parametri
scopo ambito attuale
ingresso ND con forma `forma_input = [batch] + forma_spaziale + forma_rimanente`, dove forma_spaziale ha dimensioni "M".
bloccoForma 1-D con forma `[M]`, tutti i valori devono essere >= 1.
imbottiture 2-D con forma "[M, 2]", tutti i valori devono essere >= 0. "paddings[i] = [pad_start, pad_end]" specifica il riempimento per la dimensione di input "i + 1", che corrisponde alla dimensione spaziale "io". È necessario che `block_shape[i]` divida `input_shape[i + 1] + pad_start + pad_end`.

Questa operazione equivale ai seguenti passaggi:

1. Azzerare l'inizio e la fine delle dimensioni "[1, ..., M]" dell'input in base a "paddings" per produrre "padded" della forma "padded_shape".

2. Rimodella "padded" in "reshape_padded" della forma:

[batch] + [forma_imbottita[1] / forma_blocco[0], forma_blocco[0], ..., forma_imbottita[M] / forma_blocco[M-1], forma_blocco[M-1]] + forma_rimanente

3. Permutare le dimensioni di "reshape_padded" per produrre "permuted_reshape_padded" di forma:

forma_blocco + [batch] + [forma_imbottita[1] / forma_blocco[0], ..., forma_imbottita[M] / forma_blocco[M-1]] + forma_rimanente

4. Rimodellare `permuted_reshape_padded` per appiattire `block_shape` nella dimensione batch, producendo un tensore di forma di output:

[batch * prod(forma_blocco)] + [forma_imbottita[1] / forma_blocco[0], ..., forma_imbottita[M] / forma_blocco[M-1]] + forma_rimanente

Qualche esempio:

(1) Per il seguente input di forma "[1, 2, 2, 1]", "block_shape = [2, 2]" e "paddings = [[0, 0], [0, 0]]":

x = [[[[1], [2]], [[3], [4]]]]
 
Il tensore di output ha forma `[4, 1, 1, 1]` e valore:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
 
(2) Per il seguente input di forma `[1, 2, 2, 3]`, `block_shape = [ 2, 2]` e `padding = [[0, 0], [0, 0]]`:
x = [[[[1, 2, 3], [4, 5, 6]],
       [[7, 8, 9], [10, 11, 12]]]]
 
Il tensore di output ha forma "[4, 1, 1, 3]" e valore:
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
 
(3) Per il seguente input di 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]]]]
 
Il tensore di output ha forma `[4, 2, 2, 1]` e valore:
x = [[[[1], [3]], [[9], [11]]],
      [[[2], [4]], [[10], [12]]],
      [[[5], [7]], [[13], [15]]],
      [[[6], [8]], [[14], [16]]]]
 
(4) Per il seguente input di forma `[2, 2, 4, 1]`, block_shape = `[ 2, 2]` e imbottitura = `[[0, 0], [2, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]]],
      [[[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
Il tensore di output ha forma `[8, 1, 3, 1]` e valore:
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]]]]
 
Questa operazione è utile, tra l'altro, per ridurre la convoluzione atroca in convoluzione regolare.

ritorna
  • una nuova istanza di SpaceToBatchNd

Uscita pubblica <T> uscita ()