Compartilhar via


estrutura DML_NONZERO_COORDINATES_OPERATOR_DESC (directml.h)

Calcula as coordenadas unidimensionais N de todos os elementos diferentes de zero do tensor de entrada.

Esse operador produz uma matriz MxN de valores, em que cada linha M contém uma coordenada N dimensional de um valor diferente de zero da entrada. Ao usar entradas FLOAT32 ou FLOAT16 , tanto negativos quanto positivos 0 (0,0f e -0,0f) são tratados como zero para fins desse operador.

O operador requer que OutputCoordinatesTensor tenha um tamanho grande o suficiente para acomodar um cenário de pior caso em que cada elemento da entrada é diferente de zero. Esse operador retorna a contagem de elementos diferentes de zero por meio do OutputCountTensor, que os chamadores podem inspecionar para determinar o número de coordenadas gravadas no OutputCoordinatesTensor.

Sintaxe

struct DML_NONZERO_COORDINATES_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputCountTensor;
  const DML_TENSOR_DESC *OutputCoordinatesTensor;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

Um tensor de entrada.

OutputCountTensor

Tipo: const DML_TENSOR_DESC*

Um tensor de saída que contém a contagem de elementos diferentes de zero no tensor de entrada. Esse tensor deve ser um escalar, ou seja, os Tamanhos desse tensor devem ser todos 1. O tipo desse tensor deve ser UINT32.

OutputCoordinatesTensor

Tipo: const DML_TENSOR_DESC*

Um tensor de saída que contém as coordenadas unidimensionais dos elementos de entrada que não são zero.

Esse tensor deve ter Tamanhos de {1,1,M,N} (se DimensionCount for 4) ou {1,1,1,M,N} (se DimensionCount for 5), em que M é o número total de elementos no InputTensor e N é maior ou igual à classificação efetiva de InputTensor, até o DimensionCount da entrada.

A classificação efetiva de um tensor é determinada pelo DimensionCount desse tensor, excluindo dimensões à esquerda de tamanho 1. Por exemplo, um tensor com tamanhos de {1,2,3,4} tem classificação 3 efetiva, assim como um tensor com tamanhos de {1,1,5,5,5}. Um tensor com tamanhos {1,1,1,1} tem a classificação 0 em vigor.

Considere um InputTensor com tamanhos de {1,1,12,5}. Esse tensor de entrada contém 60 elementos e tem uma classificação efetiva de 2. Neste exemplo, todos os tamanhos válidos de OutputCoordinatesTensor são do formato {1,1,60,N}, em que N >= 2, mas não maior que o DimensionCount (4 neste exemplo).

As coordenadas gravadas nesse tensor têm a garantia de serem ordenadas pelo índice de elemento crescente. Por exemplo, se o tensor de entrada tiver três valores diferentes de zero nas coordenadas , e , os valores gravados em OutputCoordinatesTensor serão [[0,5], [1,0], [1,2]].{0,5}{1,2}{1,0}

Embora esse tensor exija que sua dimensão M seja igual ao número de elementos no tensor de entrada, esse operador gravará apenas um máximo de elementos OutputCount nesse tensor. O OutputCount é retornado por meio do OutputCountTensor escalar.

Observação

Os elementos restantes desse tensor além de OutputCount são indefinidos quando esse operador é concluído. Você não deve contar com os valores desses elementos.

Exemplo

InputTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[1.0f,  0.0f, 0.0f,  2.0f],
 [-0.0f, 3.5f, 0.0f, -5.2f]]

OutputCountTensor: (Sizes:{1,1,1,1}, DataType:UINT32)
[4]

OutputCoordinatesTensor: (Sizes:{1,1,8,3}, DataType:UINT32)
[[0, 0, 0],
 [0, 0, 3],
 [0, 1, 1],
 [0, 1, 3],
 [0, 0, 0], // 
 [0, 0, 0], // Values in rows >= OutputCountTensor (4 in
 [0, 0, 0], // this case) are left undefined
 [0, 0, 0]] // 

Comentários

Disponibilidade

Esse operador foi introduzido no DML_FEATURE_LEVEL_3_0.

Suporte ao Tensor

DML_FEATURE_LEVEL_4_0 e superior

Tensor Tipo Dimensões Contagens de dimensões com suporte Tipos de dados com suporte
InputTensor Entrada { [D0], [D1], [D2], [D3], [D4], [D5], [D6], D7 } 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputCountTensor Saída { [1], [1], [1], [1], [1], [1], [1], 1 } 1 a 8 UINT32
OutputCoordinatesTensor Saída { [1], [1], [1], [1], [1], [1], M, N } 2 a 8 UINT32

DML_FEATURE_LEVEL_3_0 e superior

Tensor Tipo Dimensões Contagens de dimensões com suporte Tipos de dados com suporte
InputTensor Entrada { [D0], D1, D2, D3, D4 } 4 a 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputCountTensor Saída { [1], 1, 1, 1, 1 } 4 a 5 UINT32
OutputCoordinatesTensor Saída { [1], 1, 1, M, N } 4 a 5 UINT32

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Cabeçalho directml.h