structure DML_ELEMENT_WISE_IF_OPERATOR_DESC (directml.h)
Sélectionne des éléments dans ATensor ou BTensor, en fonction de la valeur de l’élément correspondant dans ConditionTensor. Les éléments non nuls de ConditionTensor sélectionnent dans ATensor, tandis que les éléments à valeur nulle sélectionnent dans BTensor.
f(cond, a, b) = a, if cond != 0
b, otherwise
Example:
[[1, 0], [1, 1]] // ConditionTensor
[[1, 2], [3, 4]] // ATensor
[[9, 8], [7, 6]] // BTensor
[[1, 8], [3, 4]] // Output
Syntaxe
struct DML_ELEMENT_WISE_IF_OPERATOR_DESC {
const DML_TENSOR_DESC *ConditionTensor;
const DML_TENSOR_DESC *ATensor;
const DML_TENSOR_DESC *BTensor;
const DML_TENSOR_DESC *OutputTensor;
};
Membres
ConditionTensor
Type : const DML_TENSOR_DESC*
Tenseur de condition à partir duquel lire.
ATensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les entrées de gauche.
BTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les entrées de droite.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur de sortie dans lequel écrire les résultats.
Notes
Peut être utilisé pour créer fonctionnellement d’autres opérateurs d’agrégation, tels que LeakyRelu. Voici une illustration en pseudo-code (pas la façon la plus efficace, mais possible) : LeakyRelu(x) = If(Less(x, 0), Mul(x, alpha), x)
.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_2_0
.
Contraintes tensoriels
- ATensor, BTensor, ConditionTensor et OutputTensor doivent avoir les mêmes DimensionCount et Sizes.
- ATensor, BTensor et OutputTensor doivent avoir le même DataType.
Prise en charge de Tensor
DML_FEATURE_LEVEL_5_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
ConditionTensor | Entrée | 1 à 8 | UINT8 |
ATensor | Entrée | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
BTensor | Entrée | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Output | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
ConditionTensor | Entrée | 1 à 8 | UINT8 |
ATensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BTensor | Entrée | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Output | 1 à 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 et versions ultérieures
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
ConditionTensor | Entrée | 4 | UINT8 |
ATensor | Entrée | 4 | FLOAT16 |
BTensor | Entrée | 4 | FLOAT16 |
OutputTensor | Output | 4 | FLOAT16 |
Spécifications
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 |