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


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