Rassemblez les tranches de « params » dans un Tensor avec une forme spécifiée par « indices ».
`indices` est un tenseur entier à K dimensions, mieux considéré comme un tenseur d'indices à dimensions (K-1) dans `params`, où chaque élément définit une tranche de `params` :
sortir[\\(i_0, ..., i_{K-2}\\)] = paramètres[indices[\\(i_0, ..., i_{K-2}\\)]]
Alors que dans tf.gather `indices` définit des tranches dans la dimension `axis` de `params`, dans tf.gather_nd , `indices` définit des tranches dans les premières `N` dimensions de `params`, où `N = indices.shape [-1]`.
La dernière dimension des « indices » peut être au plus le rang de « params » :
indices.shape[-1] <= params.rank
La dernière dimension des `indices` correspond aux éléments (si `indices.shape[-1] == params.rank`) ou aux tranches (si `indices.shape[-1] < params.rank`) le long de la dimension `indices. shape[-1]` de `params`. Le tenseur de sortie a la forme
indices.shape[:-1] + params.shape[indices.shape[-1]:]
Notez que sur le CPU, si un index hors limite est trouvé, une erreur est renvoyée. Sur GPU, si un index hors limite est trouvé, un 0 est stocké dans la valeur de sortie correspondante.
Quelques exemples ci-dessous.
Indexation simple dans une matrice :
indices = [[0, 0], [1, 1]]
params = [['a', 'b'], ['c', 'd']]
output = ['a', 'd']
indices = [[1], [0]]
params = [['a', 'b'], ['c', 'd']]
output = [['c', 'd'], ['a', 'b']]
indices = [[1]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[['a1', 'b1'], ['c1', 'd1']]]
indices = [[0, 1], [1, 0]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [['c0', 'd0'], ['a1', 'b1']]
indices = [[0, 0, 1], [1, 0, 1]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = ['b0', 'b1']
indices = [[[0, 0]], [[0, 1]]]
params = [['a', 'b'], ['c', 'd']]
output = [['a'], ['b']]
indices = [[[1]], [[0]]]
params = [['a', 'b'], ['c', 'd']]
output = [[['c', 'd']], [['a', 'b']]]
indices = [[[1]], [[0]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[[['a1', 'b1'], ['c1', 'd1']]],
[[['a0', 'b0'], ['c0', 'd0']]]]
indices = [[[0, 1], [1, 0]], [[0, 0], [1, 1]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[['c0', 'd0'], ['a1', 'b1']],
[['a0', 'b0'], ['c1', 'd1']]]
indices = [[[0, 0, 1], [1, 0, 1]], [[0, 1, 1], [1, 1, 0]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [['b0', 'b1'], ['d0', 'c1']]
tf.gather et `tf.batch_gather`. 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 > GatherNd <T> | créer ( Portée de la portée, Paramètres de l'Opérande <T>, Opérande <? étend TNumber > indices) Méthode d'usine pour créer une classe encapsulant une nouvelle opération GatherNd. |
| Sortie <T> | sortir () Valeurs de `params` collectées à partir des indices donnés par `indices`, avec la forme `indices.shape[:-1] + params.shape[indices.shape[-1]:]`. |
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 GatherNd <T> create ( Scope scope, Operand <T> paramètres, Operand <? extends TNumber > indices)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération GatherNd.
Paramètres
| portée | portée actuelle |
|---|---|
| paramètres | Tenseur à partir duquel collecter les valeurs. |
| indices | Tenseur d'indice. |
Retours
- une nouvelle instance de GatherNd
sortie publique <T> sortie ()
Valeurs de `params` collectées à partir des indices donnés par `indices`, avec la forme `indices.shape[:-1] + params.shape[indices.shape[-1]:]`.