структура DML_ELEMENT_WISE_IF_OPERATOR_DESC (directml.h)
Выбирает элементы из ATensor или BTensor в зависимости от значения соответствующего элемента в ConditionTensor. Ненулевые элементы ConditionTensor выбираются из ATensor, а элементы с нулевым значением — из 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
Синтаксис
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;
};
Члены
ConditionTensor
Тип: const DML_TENSOR_DESC*
Тензор условия для чтения.
ATensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий входные данные слева.
BTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий входные данные правой стороны.
OutputTensor
Тип: const DML_TENSOR_DESC*
Выходной тензор для записи результатов.
Комментарии
Может использоваться для функционального создания других агрегатных операторов, таких как LeakyRelu. Вот иллюстрация в псевдокоде (не самый эффективный, но возможный): LeakyRelu(x) = If(Less(x, 0), Mul(x, alpha), x)
.
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_2_0
.
Ограничения тензоров
- ATensor, BTensor, ConditionTensor и OutputTensor должны иметь одинаковые значения DimensionCount и Size.
- ATensor, BTensor и OutputTensor должны иметь один и тот же тип DataType.
Поддержка тензоров
DML_FEATURE_LEVEL_5_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
ConditionTensor | Входные данные | От 1 до 8 | UINT8 |
ATensor | Входные данные | От 1 до 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
BTensor | Входные данные | От 1 до 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Выходные данные | От 1 до 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
ConditionTensor | Входные данные | От 1 до 8 | UINT8 |
ATensor | Входные данные | От 1 до 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
BTensor | Входные данные | От 1 до 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Выходные данные | От 1 до 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
ConditionTensor | Входные данные | 4 | UINT8 |
ATensor | Входные данные | 4 | FLOAT16 |
BTensor | Входные данные | 4 | FLOAT16 |
OutputTensor | Выходные данные | 4 | FLOAT16 |
Требования
Минимальная версия клиента | Windows 10 версии 2004 (10.0; Сборка 19041) |
Минимальная версия сервера | Windows Server версии 2004 (10.0; Сборка 19041) |
Верхняя часть | directml.h |