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 |