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 |