Compartir a través de


estructura DML_NONZERO_COORDINATES_OPERATOR_DESC (directml.h)

Calcula las coordenadas N dimensionales de todos los elementos que no son cero del tensor de entrada.

Este operador genera una matriz MxN de valores, donde cada fila M contiene una coordenada N dimensional de un valor distinto de cero de la entrada. Cuando se usan entradas FLOAT32 o FLOAT16 , las entradas negativas y positivas 0 (0,0f y -0,0f) se tratan como cero para los fines de este operador.

El operador requiere que OutputCoordinatesTensor tenga un tamaño lo suficientemente grande como para dar cabida a un escenario en el que todos los elementos de la entrada no son cero. Este operador devuelve el recuento de elementos distintos de cero a través de OutputCountTensor, que los llamadores pueden inspeccionar para determinar el número de coordenadas escritas en OutputCoordinatesTensor.

Sintaxis

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

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor de entrada.

OutputCountTensor

Tipo: const DML_TENSOR_DESC*

Tensor de salida que contiene el recuento de elementos distintos de cero en el tensor de entrada. Este tensor debe ser un escalar, es decir, los tamaños de este tensor deben ser 1. El tipo de este tensor debe ser UINT32.

OutputCoordinatesTensor

Tipo: const DML_TENSOR_DESC*

Tensor de salida que contiene las coordenadas N dimensionales de los elementos de entrada que no son cero.

Este tensor debe tener Tamaños de {1,1,M,N} (si DimensionCount es 4) o {1,1,1,M,N} (si DimensionCount es 5), donde M es el número total de elementos del InputTensor y N es mayor o igual que la clasificación efectiva de InputTensor, hasta el DimensionCount de la entrada.

La clasificación efectiva de un tensor viene determinada por dimensionCount de ese tensor excluyendo las dimensiones iniciales del tamaño 1. Por ejemplo, un tensor con tamaños de {1,2,3,4} tiene un rango efectivo 3, como un tensor con tamaños de {1,1,5,5,5}. Un tensor con tamaños {1,1,1,1} tiene rango efectivo 0.

Considere una clase InputTensor con tamaños de {1,1,12,5}. Este tensor de entrada contiene 60 elementos y tiene una clasificación efectiva de 2. En este ejemplo, todos los tamaños válidos de OutputCoordinatesTensor tienen el formato {1,1,60,N}, donde N >= 2 pero no mayor que DimensionCount (4 en este ejemplo).

Se garantiza que las coordenadas escritas en este tensor están ordenadas por un índice de elemento ascendente. Por ejemplo, si el tensor de entrada tiene 3 valores distintos de cero en las coordenadas , y , los valores escritos en OutputCoordinatesTensor serán [[0,5], [1,0], [1,2]].{0,5}{1,2}{1,0}

Aunque este tensor requiere que su dimensión M sea igual al número de elementos del tensor de entrada, este operador solo escribirá un máximo de elementos OutputCount en este tensor. OutputCount se devuelve a través de OutputCountTensor escalar.

Nota

Los elementos restantes de este tensor más allá de OutputCount no están definidos una vez completado este operador. No debe basarse en los valores de estos elementos.

Ejemplo

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]] // 

Comentarios

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_3_0.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_4_0 y versiones posteriores

Tensor Clase Dimensions Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada { [D0], [D1], [D2], [D3], [D4], [D5], [D6], D7 } De 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputCountTensor Resultados { [1], [1], [1], [1], [1], [1], [1], 1 } De 1 a 8 UINT32
OutputCoordinatesTensor Resultados { [1], [1], [1], [1], [1], [1], M, N } De 2 a 8 UINT32

DML_FEATURE_LEVEL_3_0 y versiones posteriores

Tensor Clase Dimensions Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada { [D0], D1, D2, D3, D4 } De 4 a 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputCountTensor Resultados { [1], 1, 1, 1, 1 } De 4 a 5 UINT32
OutputCoordinatesTensor Resultados { [1], 1, 1, M, N } De 4 a 5 UINT32

Requisitos

Requisito Value
Cliente mínimo compatible compilación 20348 de Windows 10
Servidor mínimo compatible compilación 20348 de Windows 10
Encabezado directml.h