estrutura DML_DIAGONAL_MATRIX_OPERATOR_DESC (directml.h)
Gera uma matriz semelhante a uma identidade com um (ou outro valor explícito) na diagonal principal e zeros em todos os outros lugares. As diagonais podem ser deslocadas (via Deslocamento) em OutputTensor[i, i + Offset]
= que Value, o que significa que um argumento de Deslocamento maior que zero desloca todos os valores para a direita e menos de zero os desloca para a esquerda. Esse operador gerador é útil para modelos para evitar o armazenamento de um tensor de constante grande. Todas as dimensões principais antes das duas últimas são tratadas como uma contagem em lote, o que significa que o tensor é tratado como pilha de matrizes 2D.
Esse operador executa o pseudocódigo a seguir.
for each coordinate in OutputTensor
OutputTensor[coordinate] = if (coordinate.y + Offset == coordinate.x) then Value else 0
endfor
Sintaxe
struct DML_DIAGONAL_MATRIX_OPERATOR_DESC {
const DML_TENSOR_DESC *OutputTensor;
INT Offset;
FLOAT Value;
};
Membros
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor no qual gravar os resultados. As dimensões são { Batch1, Batch2, OutputHeight, OutputWidth }
. A altura e a largura não precisam ser quadradas.
Offset
Tipo: INT
Um deslocamento para deslocar as linhas diagonais de Value, com deslocamentos positivos deslocando o valor gravado para a direita/para cima (exibindo a saída como uma matriz com o canto superior esquerdo como 0,0) e deslocamentos negativos para a esquerda/para baixo.
Value
Tipo: FLOAT
Um valor a ser preenchido ao longo da diagonal 2D. O valor padrão é 1,0. Observe que, se o DataType dos tensores não for DML_TENSOR_DATA_TYPE_FLOAT16 ou DML_TENSOR_DATA_TYPE_FLOAT32, o valor poderá ser truncado (por exemplo, 10,6 se tornará 10).
Exemplos
Matriz de identidade padrão:
Offset: 0
Value: 1.0
OutputTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]]]
Shift ones right/up:
Offset: 1
Value: 1.0
OutputTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[ 0, 1, 0],
[ 0, 0, 1],
[ 0, 0, 0]]]]
Shift ones left/down:
Offset: -1
Value: 1.0
OutputTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[0, 0],
[1, 0],
[0, 1]]]]
Desloce a linha diagonal das que se tornam zeros até agora:
Offset: -3
Value: 1.0
OutputTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[0, 0],
[0, 0],
[0, 0]]]]
Comentários
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_2_0
.
Suporte ao Tensor
DML_FEATURE_LEVEL_5_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
OutputTensor | Saída | 2 a 4 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_4_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
OutputTensor | Saída | 2 a 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
OutputTensor | Saída | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
OutputTensor | Saída | 4 | FLOAT32, FLOAT16 |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10, versão 2004 (10.0; Build 19041) |
Servidor mínimo com suporte | Windows Server, versão 2004 (10.0; Build 19041) |
Cabeçalho | directml.h |