структура DML_ONE_HOT_OPERATOR_DESC (directml.h)
Создает тензор, заполненный однократно закодированными значениями. Этот оператор создает выходной тензор, в котором для всех последовательностей в выбранной оси все, кроме одного элемента в этой последовательности, задается значение OffValue, а оставшийся один элемент — OnValue. Последовательность относится к одному из наборов элементов, которые существуют вдоль измерения ОсиOutputTensor.
Расположение OnValue для каждой последовательности и выбор OnValue/OffValue определяются значениями IndicesTensor и ValuesTensor соответственно.
Синтаксис
struct DML_ONE_HOT_OPERATOR_DESC {
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *ValuesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Члены
IndicesTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий индекс в элементах OnValue для каждой последовательности вдоль оси. Индексы измеряются относительно начала последовательности (в отличие от начала тензора). Например, индекс 0 всегда ссылается на первый элемент для всех последовательностей на оси.
Если значение индекса для последовательности превышает количество элементов вдоль измерения Оси в OutputTensor, то это значение индекса игнорируется, и все элементы в этой последовательности будут иметь значение OffValue.
Начиная с DML_FEATURE_LEVEL_3_0
, этот оператор поддерживает отрицательные значения индекса при использовании целочисленного типа со знаком с этим тензором. Отрицательные индексы интерпретируются как относящиеся к концу последовательности. Например, индекс -1 ссылается на последний элемент последовательности.
Этот тензор должен иметь размерность и размеры, равные OutputTensor, за исключением измерения, указанного параметром Axis . Размер измерения оси должен быть равным 1. Например, если outputTensor имеет размеры {2,3,4,5}
, а Ось — 1, то размер элемента IndicesTensor должен быть {2,1,4,5}
равен .
ValuesTensor
Тип: const DML_TENSOR_DESC*
Этот тензор может иметь любой размер, если он содержит по крайней мере два элемента. 0-й элемент этого тензора интерпретируется как OffValue, а первый элемент в самом быстро меняющемся измерении размера >1 интерпретируется как OnValue.
OutputTensor
Тип: const DML_TENSOR_DESC*
Выходной тензор для записи результатов. Этот тензор должен иметь число измерений и размеры, равные свойству IndicesTensor, за исключением измерения, указанного параметром Axis . Размер измерения оси в этом тензоре может иметь любое значение больше 0.
Axis
Тип: UINT
Индекс измерения для создания однократных закодированных последовательностей. Это значение должно быть меньше значения DimensionCount элемента IndicesTensor.
Примеры
Пример 1
IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
[3],
[2]]]]
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]
Axis: 3
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 0], // The one-hot encoding is formed across the rows
[0, 0, 0, 1],
[0, 0, 1, 0]]]]
Пример 2. Использование другой оси
IndicesTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[0, 2, 1, 0]]]]
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]
Axis: 2
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 1], // The one-hot encoding is formed across the columns
[0, 0, 1, 0],
[0, 1, 0, 0]]]]
Пример 3. Использование различных значений включения и выключения
IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
[3],
[2]]]]
ValuesTensor: (Sizes:{1,1,3,1}, DataType:FLOAT32)
[[[[4], // off value
[2], // on value
[9]]]] // unused
Axis: 3
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 4, 4, 4],
[4, 4, 4, 2],
[4, 4, 2, 4]]]]
Пример 4. Отрицательные и внеграничные индексы
IndicesTensor: (Sizes:{1,1,3,1}, DataType:INT32)
[[[[ -3],
[100],
[ 3]]]]
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]
Axis: 3
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 1, 0, 0], // negative indices count from the end
[0, 0, 0, 0], // out-of-bounds indices are ignored; all elements are set to OffValue
[0, 0, 0, 1]]]]
Комментарии
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_2_0
.
Ограничения тензоров
- В элементах IndicesTensor, OutputTensor и ValuesTensor должны быть одинаковые значения DimensionCount.
- OutputTensor и ValuesTensor должны иметь один и тот же тип DataType.
Поддержка тензоров
DML_FEATURE_LEVEL_4_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
IndicesTensor | Входные данные | От 1 до 8 | INT64, INT32, UINT64, UINT32 |
ValuesTensor | Входные данные | От 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 | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
IndicesTensor | Входные данные | От 1 до 8 | INT64, INT32, UINT64, UINT32 |
ValuesTensor | Входные данные | От 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_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
IndicesTensor | Входные данные | 4 | UINT32 |
ValuesTensor | Входные данные | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Выходные данные | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
IndicesTensor | Входные данные | 4 | UINT32 |
ValuesTensor | Входные данные | 4 | FLOAT32, FLOAT16 |
OutputTensor | Выходные данные | 4 | FLOAT32, FLOAT16 |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10, версия 2004 (10.0; Сборка 19041) |
Минимальная версия сервера | Windows Server версии 2004 (10.0; Сборка 19041) |
Верхняя часть | directml.h |