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.

Costanti

Corda OP_NAME Il nome di questa operazione, come noto al motore principale di TensorFlow

Metodi pubblici

Uscita <T>
comeuscita ()
Restituisce l'handle simbolico del tensore.
statico <T estende TType > SpaceToBatchNd <T>
create ( ambito ambito , operando <T> input, operando <? estende TNumber > blockShape, operando <? estende TNumber > riempimenti)
Metodo factory per creare una classe che racchiude una nuova operazione SpaceToBatchNd.
Uscita <T>

Metodi ereditati

Costanti

Stringa finale statica pubblica OP_NAME

Il nome di questa operazione, come noto al motore principale di TensorFlow

Valore costante: "SpaceToBatchND"

Metodi pubblici

Uscita pubblica <T> asOutput ()

Restituisce l'handle simbolico del 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 , operando <T> input, operando <? estende TNumber > blockShape, operando <? estende TNumber > riempimenti)

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 ()