estrutura DML_REDUCE_OPERATOR_DESC (directml.h)
Gera a redução de elementos (soma, produto, mínimo e assim por diante) em uma ou mais dimensões do tensor de entrada.
Cada elemento de saída é o resultado da aplicação de uma função de redução em um subconjunto do tensor de entrada. Uma função de redução, como soma, mapeia N
elementos de entrada para um único elemento de saída. Os elementos de entrada envolvidos em cada redução são determinados pelos eixos de entrada fornecidos: N
é igual ao produto dos tamanhos dos eixos reduzidos. Se todos os eixos de entrada forem especificados, o operador executará uma redução em todo o tensor de entrada e produzirá um único elemento de saída.
Sintaxe
struct DML_REDUCE_OPERATOR_DESC {
DML_REDUCE_FUNCTION Function;
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
};
Membros
Function
Tipo: DML_REDUCE_FUNCTION
Especifica a função de redução a ser aplicada à entrada.
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor do qual ler.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor no qual gravar os resultados. Cada elemento de saída é o resultado de uma redução em um subconjunto de elementos do InputTensor.
- DimensionCount deve corresponder a InputTensor.DimensionCount (a classificação do tensor de entrada é preservada).
- Os tamanhos devem corresponder a InputTensor.Sizes, exceto para dimensões incluídas nos Eixos reduzidos, que devem ser tamanho 1.
AxisCount
Tipo: UINT
O número de eixos a serem reduzidos. Esse campo determina o tamanho da matriz Axes .
Axes
Tipo: _Field_size_(AxisCount) const UINT*
Os eixos ao longo dos quais reduzir. Os valores devem estar no intervalo [0, InputTensor.DimensionCount - 1]
.
Exemplos
Todos os exemplos a seguir usam esse mesmo tensor de entrada bidimensional.
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 4, 2]]
Exemplo 1. Aplicando soma a colunas
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6, // sum({1, 3, 2})
6, // sum({2, 0, 4})
9]] // sum({3, 4, 2})
Exemplo 2. Aplicando soma a linhas
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
[7], // sum({3, 0, 4})
[8]] // sum({2, 4, 2})
Exemplo 3.Aplicar soma a todos os eixos (o tensor inteiro)
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]] // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_1_0
.
Restrições do Tensor
- Os tipos de dados tensor de entrada e saída devem corresponder, exceto ao usar as funções ARGMAX e ARGMIN, que sempre geram um tipo de dados integral.
- Os tamanhos de saída devem ser iguais aos tamanhos de entrada, exceto para os eixos reduzidos, que devem ser 1.
Suporte ao Tensor de acordo com a função
ARGMIN e ARGMAX
DML_FEATURE_LEVEL_4_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 1 a 8 | INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_3_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 1 a 8 | INT64, INT32, UINT64, 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, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 4 | UINT32 |
DML_FEATURE_LEVEL_1_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 4 | UINT32 |
MÉDIA, L2, LOG_SUM e LOG_SUM_EXP
DML_FEATURE_LEVEL_3_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_1_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16 |
L1 e SUM_SQUARE
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_3_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_1_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16 |
MIN e MAX
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, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
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 |
DML_FEATURE_LEVEL_1_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16 |
MULTIPLY e SUM
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_3_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 |
DML_FEATURE_LEVEL_1_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16 |
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | directml.h |
Confira também
O nível de recurso 3_0 introduziu esses operadores autônomos que substituem a funcionalidade disponível com DML_REDUCE_FUNCTION_ARGMAX e DML_REDUCE_FUNCTION_ARGMIN.