flux tensoriel : : opérations : : LotVersEspaceND
#include <array_ops.h>
BatchToSpace pour les tenseurs ND de type T.
Résumé
Cette opération remodèle la dimension "batch" 0 en M + 1
dimensions de forme block_shape + [batch]
, entrelace ces blocs dans la grille définie par les dimensions spatiales [1, ..., M]
, pour obtenir un résultat avec le même rang que l’entrée. Les dimensions spatiales de ce résultat intermédiaire sont ensuite éventuellement recadrées en fonction des crops
pour produire le résultat. C'est l'inverse de SpaceToBatch. Voir ci-dessous pour une description précise.
Arguments :
- scope : un objet Scope
- entrée : ND avec forme
input_shape = [batch] + spatial_shape + remaining_shape
, où spatial_shape a M dimensions. - block_shape : 1-D avec la forme
[M]
, toutes les valeurs doivent être >= 1. - cultures : 2-D avec la forme
[M, 2]
, toutes les valeurs doivent être >= 0.crops[i] = [crop_start, crop_end]
spécifie la quantité à recadrer à partir de la dimension d'entréei + 1
, qui correspond à la dimension spatialei
. Il est nécessaire quecrop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1]
.
Cette opération équivaut aux étapes suivantes :
- Remodeler
input
pourreshaped
la forme : [block_shape[0], ..., block_shape[M-1], batch / prod(block_shape), input_shape[1], ..., input_shape[N-1]] - Permutez les dimensions de
reshaped
pour produire une formepermuted
[batch / prod(block_shape),input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1],input_shape[M+1], ..., forme_entrée[N-1]] - Remodeler
permuted
pour produirereshaped_permuted
de forme [batch / prod(block_shape),input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1],input_shape[M+1], .. ., forme_entrée[N-1]] - Recadrez le début et la fin des dimensions
[1, ..., M]
dereshaped_permuted
en fonction descrops
pour produire la sortie de forme : [batch / prod(block_shape),input_shape[1] * block_shape[0] - crop[0, 0] - cultures[0,1], ..., input_shape[M] * block_shape[M-1] - cultures[M-1,0] - cultures[M-1,1],input_shape[M+1] , ..., forme_entrée[N-1]]
Quelques exemples :
(1) Pour l'entrée suivante de shape [4, 1, 1, 1]
, block_shape = [2, 2]
et crops = [[0, 0], [0, 0]]
:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
Le tenseur de sortie a la forme [1, 2, 2, 1]
et la valeur :
x = [[[[1], [2]], [[3], [4]]]]
(2) Pour l'entrée suivante de shape [4, 1, 1, 3]
, block_shape = [2, 2]
et crops = [[0, 0], [0, 0]]
:
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
Le tenseur de sortie a la forme [1, 2, 2, 3]
et la valeur :
x = [[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]]
(3) Pour l'entrée suivante de shape [4, 2, 2, 1]
, block_shape = [2, 2]
et crops = [[0, 0], [0, 0]]
:
x = [[[[1], [3]], [[9], [11]]], [[[2], [4]], [[10], [12]]], [[[5], [7]], [[13], [15]]], [[[6], [8]], [[14], [16]]]]
Le tenseur de sortie a la forme [1, 4, 4, 1]
et la valeur :
x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]], [[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
(4) Pour l'entrée suivante de shape [8, 1, 3, 1]
, block_shape = [2, 2]
et 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]]]]
Le tenseur de sortie a la forme [2, 2, 4, 1]
et la valeur :
x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]]], [[[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
Retours :
-
Output
: Le tenseur de sortie.
Constructeurs et Destructeurs | |
---|---|
BatchToSpaceND (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input block_shape, :: tensorflow::Input crops) |
Attributs publics | |
---|---|
operation | |
output |
Fonctions publiques | |
---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const |
Attributs publics
opération
Operation operation
sortir
::tensorflow::Output output
Fonctions publiques
LotVersEspaceND
BatchToSpaceND( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input block_shape, ::tensorflow::Input crops )
nœud
::tensorflow::Node * node() const
opérateur :: tensorflow :: Entrée
operator::tensorflow::Input() const
opérateur :: tensorflow :: Sortie
operator::tensorflow::Output() const