SpaceToBatch pour les tenseurs ND de type T.
Cette opération divise les dimensions "spatiales" `[1, ..., M]` de l'entrée en une grille de blocs de forme `block_shape`, et entrelace ces blocs avec la dimension "batch" (0) telle que dans la sortie , les dimensions spatiales « [1, ..., M] » correspondent à la position dans la grille, et la dimension du lot combine à la fois la position dans un bloc spatial et la position d'origine du lot. Avant la division en blocs, les dimensions spatiales de l'entrée sont éventuellement complétées par des zéros en fonction des « paddings ». Voir ci-dessous pour une description précise.
Constantes
Chaîne | OP_NAME | Le nom de cette opération, tel que connu par le moteur principal TensorFlow |
Méthodes publiques
Sortie <T> | comme Sortie () Renvoie le handle symbolique du tenseur. |
statique <T étend TType > SpaceToBatchNd <T> | |
Sortie <T> | sortir () |
Méthodes héritées
Constantes
chaîne finale statique publique OP_NAME
Le nom de cette opération, tel que connu par le moteur principal TensorFlow
Méthodes publiques
sortie publique <T> asOutput ()
Renvoie le handle symbolique du tenseur.
Les entrées des opérations TensorFlow sont les sorties d'une autre opération TensorFlow. Cette méthode est utilisée pour obtenir un handle symbolique qui représente le calcul de l’entrée.
public static SpaceToBatchNd <T> créer (portée de la portée, entrée de l'opérande <T>, opérande <? étend TNumber > blockShape, opérande <? étend TNumber > paddings)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération SpaceToBatchNd.
Paramètres
portée | portée actuelle |
---|---|
saisir | ND avec la forme `input_shape = [batch] + spatial_shape + left_shape`, où spatial_shape a des dimensions `M`. |
forme de bloc | 1-D avec la forme `[M]`, toutes les valeurs doivent être >= 1. |
rembourrages | 2-D avec la forme `[M, 2]`, toutes les valeurs doivent être >= 0. `paddings[i] = [pad_start, pad_end]` spécifie le remplissage pour la dimension d'entrée `i + 1`, qui correspond à la dimension spatiale 'je'. Il est nécessaire que `block_shape[i]` divise `input_shape[i + 1] + pad_start + pad_end`. Cette opération équivaut aux étapes suivantes : 1. Complétez par zéro le début et la fin des dimensions `[1, ..., M]` de l'entrée en fonction des `paddings` pour produire un `rembourré` de forme `padded_shape`. 2. Remodelez « padded » en « reshape_padded » de forme : [lot] + [padded_shape[1] / block_shape[0], block_shape[0], ..., padded_shape[M] / block_shape[M-1], block_shape[M-1]] + restant_shape 3. Permutez les dimensions de `reshape_padded` pour produire `permuted_reshape_padded` de forme : block_shape + [batch] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + restant_shape 4. Remodelez `permuted_reshape_padded` pour aplatir `block_shape` dans la dimension du lot, produisant un tenseur de sortie de forme : [batch * prod(block_shape)] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + restant_shape Quelques exemples : (1) Pour l'entrée suivante de forme `[1, 2, 2, 1]`, `block_shape = [2, 2]` et `paddings = [[0, 0], [0, 0]]` : Le tenseur de sortie a la forme `[4, 1, 1, 1]` et la valeur : (2) Pour l'entrée suivante de forme `[1, 2, 2, 3]`, `block_shape = [2, 2]` et `paddings = [[0, 0], [0, 0]]` : Le tenseur de sortie a la forme `[4, 1, 1, 3]` et la valeur : (3) Pour l'entrée suivante de forme `[1, 4, 4, 1]`, `block_shape = [2, 2]` et `paddings = [[0, 0], [0, 0]]` : Le tenseur de sortie a la forme `[4, 2, 2, 1]` et la valeur : (4) Pour l'entrée suivante de forme `[2, 2, 4, 1]`, block_shape = `[2, 2]` et paddings = `[[0, 0], [2, 0]]` : Le tenseur de sortie a la forme `[8, 1, 3, 1]` et la valeur : Entre autres, cette opération est utile pour réduire la circonvolution atreuse en circonvolution régulière. |
Retours
- une nouvelle instance de SpaceToBatchNd