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 |