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.