Compartilhar via


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