структура DML_DIAGONAL_MATRIX_OPERATOR_DESC (directml.h)
Создает матрицу, похожую на удостоверение, с единицами (или другим явным значением) по основной диагонали и нулями везде. Диагональные могут быть смещены (с помощью смещения), где OutputTensor[i, i + Offset]
= Значение, то есть аргумент Offset больше нуля сдвигает все значения вправо, а меньше нуля сдвигает их влево. Этот оператор генератора полезен для моделей, чтобы избежать хранения большого константного тензора. Все ведущие измерения до последних двух рассматриваются как число пакетов, то есть тензор обрабатывается как стек двухd матриц.
Этот оператор выполняет следующий псевдокод.
for each coordinate in OutputTensor
OutputTensor[coordinate] = if (coordinate.y + Offset == coordinate.x) then Value else 0
endfor
Синтаксис
struct DML_DIAGONAL_MATRIX_OPERATOR_DESC {
const DML_TENSOR_DESC *OutputTensor;
INT Offset;
FLOAT Value;
};
Члены
OutputTensor
Тип: const DML_TENSOR_DESC*
Тензор для записи результатов. Измерения : { Batch1, Batch2, OutputHeight, OutputWidth }
. Высота и ширина не должны быть квадратными.
Offset
Тип: INT
Смещение для смещения диагональных линий Значения с положительными смещениями вправо или вверх (просмотр выходных данных в виде матрицы с верхним левым значением 0,0) и отрицательными смещениями влево/вниз.
Value
Тип: FLOAT
Значение для заполнения вдоль двухd-диагонали. Стандартное значение — 1,0. Обратите внимание, что если DataType тензоров не DML_TENSOR_DATA_TYPE_FLOAT16 или не DML_TENSOR_DATA_TYPE_FLOAT32, то значение может быть усечено (например, 10,6 станет 10).
Примеры
Матрица удостоверений по умолчанию:
Offset: 0
Value: 1.0
OutputTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]]]
Сместить вправо или вверх:
Offset: 1
Value: 1.0
OutputTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[ 0, 1, 0],
[ 0, 0, 1],
[ 0, 0, 0]]]]
Сместить влево или вниз:
Offset: -1
Value: 1.0
OutputTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[0, 0],
[1, 0],
[0, 1]]]]
Сместите диагональную линию настолько, чтобы все они стали нулями:
Offset: -3
Value: 1.0
OutputTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[0, 0],
[0, 0],
[0, 0]]]]
Комментарии
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_2_0
.
Поддержка тензоров
DML_FEATURE_LEVEL_5_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
OutputTensor | Выходные данные | От 2 до 4 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_4_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
OutputTensor | Выходные данные | От 2 до 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
OutputTensor | Выходные данные | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
OutputTensor | Выходные данные | 4 | FLOAT32, FLOAT16 |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10, версия 2004 (10.0; Сборка 19041) |
Минимальная версия сервера | Windows Server версии 2004 (10.0; Сборка 19041) |
Верхняя часть | directml.h |