Share via


DML_ELEMENT_WISE_IF_OPERATOR_DESC-Struktur (directml.h)

Wählt Elemente entweder aus ATensor oder BTensor aus, abhängig vom Wert des entsprechenden Elements in ConditionTensor. Ungleich null Elemente von ConditionTensor wählen aus ATensor aus, während nullwertige Elemente aus BTensor auswählen.

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

Syntax

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;
};

Member

ConditionTensor

Typ: const DML_TENSOR_DESC*

Der Bedingungs tensor, aus dem gelesen werden soll.

ATensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die linken Eingaben enthält.

BTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die rechten Eingaben enthält.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Ausgabe tensor, in den die Ergebnisse geschrieben werden sollen.

Hinweise

Kann verwendet werden, um andere Aggregatoperatoren wie LeakyRelu funktionell aufzubauen. Dies ist eine Abbildung im Pseudocode (nicht die effizienteste, aber möglich): LeakyRelu(x) = If(Less(x, 0), Mul(x, alpha), x).

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_0eingeführt.

Tensoreinschränkungen

  • ATensor, BTensor, ConditionTensor und OutputTensor müssen über die gleichen DimensionCount und Sizes verfügen.
  • ATensor, BTensor und OutputTensor müssen denselben DataType aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_5_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
ConditionTensor Eingabe 1 bis 8 UINT8
ATensor Eingabe 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
BTensor Eingabe 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Ausgabe 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
ConditionTensor Eingabe 1 bis 8 UINT8
ATensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
BTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Ausgabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_0 und höher

Tensor Typ Unterstützte Dimensionsanzahl Unterstützte Datentypen
ConditionTensor Eingabe 4 UINT8
ATensor Eingabe 4 FLOAT16
BTensor Eingabe 4 FLOAT16
OutputTensor Ausgabe 4 FLOAT16

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 10, Version 2004 (10.0; Build 19041)
Unterstützte Mindestversion (Server) Windows Server, Version 2004 (10.0; Build 19041)
Kopfzeile directml.h