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_0
eingefü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 |