Partager via


structure DML_ONE_HOT_OPERATOR_DESC (directml.h)

Produit un tenseur rempli de valeurs encodées à chaud . Cet opérateur produit un tenseur de sortie où, pour toutes les séquences d’un axe choisi, tous les éléments de cette séquence, sauf un, sont définis sur OffValue, et l’élément unique restant est défini sur OnValue. Une séquence fait référence à l’un des ensembles d’éléments qui existent le long de la dimension Axe du OutputTensor.

L’emplacement de l’onValue pour chaque séquence et le choix d’OnValue/OffValue sont déterminés respectivement par IndexsTensor et ValuesTensor.

Syntaxe

struct DML_ONE_HOT_OPERATOR_DESC {
  const DML_TENSOR_DESC *IndicesTensor;
  const DML_TENSOR_DESC *ValuesTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

Membres

IndicesTensor

Type : const DML_TENSOR_DESC*

Tenseur contenant l’index dans les éléments de l’onValue, pour chaque séquence le long de l’axe. Les index sont mesurés par rapport au début de leur séquence (par opposition au début du tenseur). Par exemple, un index de 0 fait toujours référence au premier élément pour toutes les séquences d’un axe.

Si une valeur d’index pour une séquence dépasse le nombre d’éléments le long de la dimension Axe dans OutputTensor, cette valeur d’index est ignorée et tous les éléments de cette séquence sont définis sur OffValue.

DML_FEATURE_LEVEL_3_0À compter de , cet opérateur prend en charge les valeurs d’index négatives lors de l’utilisation d’un type intégral signé avec ce tenseur. Les index négatifs sont interprétés comme étant relatifs à la fin de la séquence. Par exemple, un index de -1 fait référence au dernier élément de la séquence.

Ce tenseur doit avoir un nombre de dimensions et des tailles égales à OutputTensor, à l’exception de la dimension spécifiée par le paramètre Axis . La taille de la dimension Axe doit être 1. Par exemple, si le OutputTensor a des tailles de {2,3,4,5} et que l’axe a la valeur 1, les tailles de indexTensor doivent être {2,1,4,5}.

ValuesTensor

Type : const DML_TENSOR_DESC*

Ce tenseur peut avoir n’importe quelle taille, tant qu’il contient au moins deux éléments. Le 0ème élément de ce tenseur est interprété comme offValue, et le 1er élément le long de la dimension qui change le plus rapidement de la taille >1 est interprété comme onValue.

OutputTensor

Type : const DML_TENSOR_DESC*

Tenseur de sortie dans lequel écrire les résultats. Ce tenseur doit avoir un nombre de dimensions et des tailles égales à IndexsTensor, à l’exception de la dimension spécifiée par le paramètre Axis . La taille de la dimension Axe dans ce tenseur peut avoir une valeur supérieure à 0.

Axis

Type : UINT

Index de la dimension pour produire des séquences encodées à chaud. Cette valeur doit être inférieure au DimensionCount de l’indiceSTensor.

Exemples

Exemple 1

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 0],    // The one-hot encoding is formed across the rows
   [0, 0, 0, 1],
   [0, 0, 1, 0]]]]

Exemple 2. Utilisation d’un autre axe

IndicesTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[0, 2, 1, 0]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 2

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 1],    // The one-hot encoding is formed across the columns
   [0, 0, 1, 0],
   [0, 1, 0, 0]]]]

Exemple 3. Utilisation de différentes valeurs on/off

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,3,1}, DataType:FLOAT32)
[[[[4],    // off value
   [2],    // on value
   [9]]]] // unused

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 4, 4, 4],
   [4, 4, 4, 2],
   [4, 4, 2, 4]]]]

Exemple 4. Indices négatifs et hors limites

IndicesTensor: (Sizes:{1,1,3,1}, DataType:INT32)
[[[[ -3],
   [100],
   [  3]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 1, 0, 0],    // negative indices count from the end
   [0, 0, 0, 0],    // out-of-bounds indices are ignored; all elements are set to OffValue
   [0, 0, 0, 1]]]]

Remarques

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_2_0.

Contraintes tensoriels

  • IndexsTensor, OutputTensor et ValuesTensor doivent avoir le même DimensionCount.
  • OutputTensor et ValuesTensor doivent avoir le même DataType.

Prise en charge de Tensor

DML_FEATURE_LEVEL_4_1 et versions ultérieures

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
IndexTensor Entrée 1 à 8 INT64, INT32, UINT64, UINT32
ValuesTensor Entrée 1 à 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Sortie 1 à 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 et versions ultérieures

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
IndexTensor Entrée 1 à 8 INT64, INT32, UINT64, UINT32
ValuesTensor Entrée 1 à 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Sortie 1 à 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 et versions ultérieures

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
IndexTensor Entrée 4 UINT32
ValuesTensor Entrée 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Sortie 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_0 et versions ultérieures

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
IndexTensor Entrée 4 UINT32
ValuesTensor Entrée 4 FLOAT32, FLOAT16
OutputTensor Sortie 4 FLOAT32, FLOAT16

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 2004 (10.0 ; Build 19041)
Serveur minimal pris en charge Windows Server, version 2004 (10.0 ; Build 19041)
En-tête directml.h