estrutura DML_CUMULATIVE_SUMMATION_OPERATOR_DESC (directml.h)
Soma os elementos de um tensor ao longo de um eixo, gravando a contagem em execução da soma no tensor de saída.
Sintaxe
struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
DML_AXIS_DIRECTION AxisDirection;
BOOL HasExclusiveSum;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor de entrada que contém elementos a serem resumidos.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor de saída para o qual gravar os resumos cumulativos resultantes. Esse tensor deve ter os mesmos tamanhos e tipo de dados que o InputTensor.
Axis
Tipo: UINT
O índice da dimensão sobre a qual somar elementos. Esse valor deve ser menor que o DimensionCount do InputTensor.
AxisDirection
Tipo: DML_AXIS_DIRECTION
Um dos valores da enumeração DML_AXIS_DIRECTION . Se definido como DML_AXIS_DIRECTION_INCREASING, a soma ocorrerá atravessando o tensor ao longo do eixo especificado pelo índice de elemento crescente. Se definido como DML_AXIS_DIRECTION_DECREASING, o inverso será true e a soma ocorrerá atravessando elementos por índice decrescente.
HasExclusiveSum
Tipo: BOOL
Se TRUE, o valor do elemento atual será excluído ao gravar a contagem em execução no tensor de saída. Se FALSE, o valor do elemento atual será incluído na contagem em execução.
Exemplos
Todos os exemplos nesta seção usam um tensor de entrada com as propriedades a seguir.
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
[3, 8, 7, 3],
[9, 6, 2, 4]]]]
Exemplo 1. Soma cumulativa entre lascas horizontais
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]]]] // [... ]
Exemplo 2. Somas exclusivas
Definir HasExclusiveSum como TRUE tem o efeito de excluir o valor do elemento atual da contagem em execução ao gravar no tensor de saída.
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]]]]
Exemplo 3. Direção do eixo
Definir AxisDirectioncomo DML_AXIS_DIRECTION_DECREASING tem o efeito de reverter a ordem de passagem de elementos ao calcular a contagem em execução.
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]]]] // [... ]
Exemplo 4. Somando um eixo diferente
Neste exemplo, o resumo ocorre verticalmente, ao longo do eixo de altura (dimensão 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 ...]
Comentários
Esse operador dá suporte à execução in-loco, o que significa que o OutputTensor tem permissão para alias do InputTensor durante a associação.
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_2_1
.
Restrições do Tensor
InputTensor e OutputTensor devem ter os mesmos DataType, DimensionCount e Sizes.
Suporte ao Tensor
DML_FEATURE_LEVEL_5_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_4_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT32, UINT32 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
Requisitos
Cliente mínimo com suporte | Windows 10 Build 20348 |
Servidor mínimo com suporte | Windows 10 Build 20348 |
Cabeçalho | directml.h |