Compartir a través de


estructura DML_CUMULATIVE_SUMMATION_OPERATOR_DESC (directml.h)

Suma los elementos de un tensor a lo largo de un eje, escribiendo el recuento de ejecución de la suma en el tensor de salida.

Sintaxis

struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
  DML_AXIS_DIRECTION    AxisDirection;
  BOOL                  HasExclusiveSum;
};

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor de entrada que contiene elementos que se van a sumar.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor de salida en el que se escribirán las summaciones acumulativas resultantes. Este tensor debe tener los mismos tamaños y el mismo tipo de datos que InputTensor.

Axis

Tipo: UINT

Índice de la dimensión en la que se van a sumar elementos. Este valor debe ser menor que dimensionCount del objeto InputTensor.

AxisDirection

Tipo: DML_AXIS_DIRECTION

Uno de los valores de la enumeración DML_AXIS_DIRECTION . Si se establece en DML_AXIS_DIRECTION_INCREASING, la suma se produce mediante el recorrido del tensor a lo largo del eje especificado por un índice de elemento ascendente. Si se establece en DML_AXIS_DIRECTION_DECREASING, el valor inverso es true y la suma se produce mediante el recorrido de elementos por índice descendente.

HasExclusiveSum

Tipo: BOOL

Si es TRUE, el valor del elemento actual se excluye al escribir el recuento en ejecución en el tensor de salida. Si es FALSE, el valor del elemento actual se incluye en el recuento en ejecución.

Ejemplos

Todos los ejemplos de esta sección usan un tensor de entrada con las siguientes propiedades.

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
   [3, 8, 7, 3],
   [9, 6, 2, 4]]]]

Ejemplo 1. Suma acumulativa a través de franjas horizontales

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2,  3,  6, 11],     // i.e. [2, 2+1, 2+1+3, 2+1+3+5]
   [3, 11, 18, 21],     //      [...                   ]
   [9, 15, 17, 21]]]]   //      [...                   ]

Ejemplo 2. Sumas exclusivas

Establecer HasExclusiveSum en TRUE tiene el efecto de excluir el valor del elemento actual del recuento en ejecución al escribir en el tensor de salida.

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: TRUE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 2,  3,  6],      // Notice the sum is written before adding the input,
   [0, 3, 11, 18],      // and the final total is not written to any output.
   [0, 9, 15, 17]]]]

Ejemplo 3. Dirección del eje

Establecer AxisDirection en DML_AXIS_DIRECTION_DECREASING tiene el efecto de revertir el orden de recorrido de los elementos al calcular el recuento en ejecución.

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[11,  9,  8,  5],    // i.e. [2+1+3+5, 1+3+5, 3+5, 5]
   [21, 18, 10,  3],    //      [...                   ]
   [21, 12,  6,  4]]]]  //      [...                   ]

Ejemplo 4. Sumando a lo largo de un eje diferente

En este ejemplo, la suma se produce verticalmente, a lo largo del eje de altura (dimensión 2).

Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2,  1,  3,  5],   // i.e. [2,    ...]
   [ 5,  9, 10,  8],   //      [2+3,  ...]
   [14, 15, 12, 12]]]] //      [2+3+9 ...]

Comentarios

Este operador admite la ejecución en contexto, lo que significa que OutputTensor puede establecer el alias InputTensor durante el enlace.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_2_1.

Restricciones tensor

InputTensor y OutputTensor deben tener el mismo DataType, DimensionCount y Sizes.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_5_0 y versiones posteriores

Tensor Kind Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_4_0 y versiones posteriores

Tensor Kind Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Kind Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Resultados 4 FLOAT32, FLOAT16, INT32, UINT32

Requisitos

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