Partager via


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