структура DML_SLICE_OPERATOR_DESC (directml.h)
Извлекает один регион ("срез") входного тензора.
Элементы, скопированные в срезе, определяются с помощью трех значений для каждого измерения.
- Смещение помечает первый элемент для копирования в измерении.
- Размер помечает количество элементов для копирования в измерении.
- Шаг указывает, что элемент увеличивается или шаг в измерении.
Предоставленные смещения, размеры и шаги должны копировать только элементы, находящиеся в пределах входного тензора (операции чтения вне границ запрещены). Размеры среза должны точно соответствовать размерам выходных тензоров. Как правило, копируемые элементы вычисляются следующим образом.
OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]
Синтаксис
struct DML_SLICE_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Offsets;
const UINT *Sizes;
const UINT *Strides;
};
Члены
InputTensor
Тип: const DML_TENSOR_DESC*
Тензор, из который извлекаются срезы.
OutputTensor
Тип: const DML_TENSOR_DESC*
Тензор, в который записываются результаты срезаных данных.
DimensionCount
Тип: UINT
Количество измерений. Это поле определяет размер массивов Offsets, Sizes и Strides . Это значение должно соответствовать DimensionCount входных и выходных тензоров. Это значение должно быть от 1 до 8 включительно, начиная с DML_FEATURE_LEVEL_3_0
; для более ранних уровней функций требуется значение 4 или 5.
Offsets
Тип: _Field_size_(DimensionCount) const UINT*
Массив, содержащий начало среза вдоль каждого измерения входного тензора в элементах .
Sizes
Тип: _Field_size_(DimensionCount) const UINT*
Массив, содержащий размер среза вдоль каждого измерения в элементах. Значения в этом массиве должны соответствовать размерам, указанным в выходном тензоре.
Strides
Тип: _Field_size_(DimensionCount) const UINT*
Массив, содержащий шаг среза вдоль каждого измерения входного тензора в элементах. Шаг больше 1 указывает, что элементы входного тензора могут быть пропущены (например, шаг 2 выбирает каждую секунду вдоль измерения).
Примеры
В следующих примерах используется тот же входной тензор:
InputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]]]
Пример 1. Непрерывный срез
Offsets = {0, 0, 1, 2}
Sizes = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}
OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7, 8],
[11, 12],
[15, 16]]]]
Пример 2. Срез со стег
Offsets = {0, 0, 1, 0}
Sizes = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}
OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5, 8],
[13, 16]]]]
Комментарии
В появилась DML_FEATURE_LEVEL_2_1
более новая версия этого оператора, DML_SLICE1_OPERATOR_DESC.
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_1_0
.
Ограничения тензоров
InputTensor и OutputTensor должны иметь одинаковые значения DataType и DimensionCount.
Поддержка тензоров
DML_FEATURE_LEVEL_4_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | От 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 | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | От 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 | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | от 4 до 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Выходные данные | от 4 до 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_1_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | от 4 до 5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
OutputTensor | Выходные данные | от 4 до 5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
Требования
Требование | Значение |
---|---|
Заголовок | directml.h |