Compartir a través de


estructura DML_ONE_HOT_OPERATOR_DESC (directml.h)

Genera un tensor lleno de valores codificados con un solo acceso . Este operador genera un tensor de salida donde, para todas las secuencias de un eje elegido, todo menos un elemento de esa secuencia se establece en OffValue y el elemento único restante se establece en OnValue. Una secuencia hace referencia a uno de los conjuntos de elementos que existen a lo largo de la dimensión Axis de OutputTensor.

La ubicación de OnValue para cada secuencia y la elección de OnValue/OffValue se determinan mediante IndexsTensor y ValuesTensor, respectivamente.

Sintaxis

struct DML_ONE_HOT_OPERATOR_DESC {
  const DML_TENSOR_DESC *IndicesTensor;
  const DML_TENSOR_DESC *ValuesTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

Miembros

IndicesTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene el índice en elementos de OnValue, para cada secuencia a lo largo del eje. Los índices se miden con respecto al principio de su secuencia (en lugar del principio del tensor). Por ejemplo, un índice de 0 siempre hace referencia al primer elemento de todas las secuencias de un eje.

Si un valor de índice de una secuencia supera el número de elementos a lo largo de la dimensión Axis en OutputTensor, ese valor de índice se omite y todos los elementos de esa secuencia se establecerán en OffValue.

DML_FEATURE_LEVEL_3_0A partir de , este operador admite valores de índice negativos cuando se usa un tipo entero firmado con este tensor. Los índices negativos se interpretan como relativos al final de la secuencia. Por ejemplo, un índice de -1 hace referencia al último elemento de la secuencia.

Este tensor debe tener el recuento de dimensiones y los tamaños iguales a OutputTensor, excepto la dimensión especificada por el parámetro Axis . El tamaño de la dimensión Axis debe ser 1. Por ejemplo, si OutputTensor tiene tamaños de {2,3,4,5} y Axis es 1, los tamaños de IndexsTensor deben ser {2,1,4,5}.

ValuesTensor

Tipo: const DML_TENSOR_DESC*

Este tensor puede tener cualquier tamaño, siempre y cuando contenga al menos dos elementos. El 0º elemento de este tensor se interpreta como OffValue, y el primer elemento a lo largo de la dimensión de cambio más rápido de tamaño >1 se interpreta como OnValue.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor de salida en el que se van a escribir los resultados. Este tensor debe tener un recuento de dimensiones y tamaños iguales a IndexsTensor, excepto la dimensión especificada por el parámetro Axis . El tamaño de la dimensión Eje de este tensor puede tener cualquier valor mayor que 0.

Axis

Tipo: UINT

Índice de la dimensión que se va a generar secuencias codificadas de un solo uso a lo largo. Este valor debe ser menor que dimensionCount del objeto IndexsTensor.

Ejemplos

Ejemplo 1

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 0],    // The one-hot encoding is formed across the rows
   [0, 0, 0, 1],
   [0, 0, 1, 0]]]]

Ejemplo 2. Uso de un eje diferente

IndicesTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[0, 2, 1, 0]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 2

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 1],    // The one-hot encoding is formed across the columns
   [0, 0, 1, 0],
   [0, 1, 0, 0]]]]

Ejemplo 3. Uso de diferentes valores activados y desactivados

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,3,1}, DataType:FLOAT32)
[[[[4],    // off value
   [2],    // on value
   [9]]]] // unused

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 4, 4, 4],
   [4, 4, 4, 2],
   [4, 4, 2, 4]]]]

Ejemplo 4. Índices negativos y fuera de límite

IndicesTensor: (Sizes:{1,1,3,1}, DataType:INT32)
[[[[ -3],
   [100],
   [  3]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 1, 0, 0],    // negative indices count from the end
   [0, 0, 0, 0],    // out-of-bounds indices are ignored; all elements are set to OffValue
   [0, 0, 0, 1]]]]

Comentarios

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_2_0.

Restricciones tensor

  • IndexsTensor, OutputTensor y ValuesTensor deben tener el mismo DimensionCount.
  • OutputTensor y ValuesTensor deben tener el mismo DataType.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_4_1 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
IndexsTensor Entrada De 1 a 8 INT64, INT32, UINT64, UINT32
ValuesTensor Entrada De 1 a 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Resultados De 1 a 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
IndexsTensor Entrada De 1 a 8 INT64, INT32, UINT64, UINT32
ValuesTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
IndexsTensor Entrada 4 UINT32
ValuesTensor Entrada 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Resultados 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
IndexsTensor Entrada 4 UINT32
ValuesTensor Entrada 4 FLOAT32, FLOAT16
OutputTensor Resultados 4 FLOAT32, FLOAT16

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 2004 (10.0; Compilación 19041)
Servidor mínimo compatible Windows Server, versión 2004 (10.0; Compilación 19041)
Encabezado directml.h