Поделиться через


структура 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