Compartilhar via


estrutura DML_ARGMAX_OPERATOR_DESC (directml.h)

Gera os índices dos elementos com valor máximo em uma ou mais dimensões do tensor de entrada.

Cada elemento de saída é o resultado da aplicação de uma redução argmax em um subconjunto do tensor de entrada. A função argmax gera o índice do elemento de valor máximo dentro de um conjunto de elementos de entrada. Os elementos de entrada envolvidos em cada redução são determinados pelos eixos de entrada fornecidos. Da mesma forma, cada índice de saída é relativo aos eixos de entrada fornecidos. Se todos os eixos de entrada forem especificados, o operador aplicará uma única redução argmax e produzirá um único elemento de saída.

Sintaxe

struct DML_ARGMAX_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
  DML_AXIS_DIRECTION    AxisDirection;
};

Membros

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 argmax 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].

AxisDirection

Tipo: DML_AXIS_DIRECTION

Determina qual índice selecionar quando vários elementos de entrada têm o mesmo valor.

  • DML_AXIS_DIRECTION_INCREASING retorna o índice do primeiro elemento com valor máximo (por exemplo, argmax({3,2,1,2,3}) = 0)
  • DML_AXIS_DIRECTION_DECREASING retorna o índice do último elemento com valor máximo (por exemplo, argmax({3,2,1,2,3}) = 4)

Exemplos

Os exemplos nesta seção usam esse mesmo tensor de entrada bidimensional.

InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
 [3, 0, 4],
 [2, 5, 2]]

Exemplo 1. Aplicando argmax a colunas

AxisCount: 1
Axes: {0}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 3}, DataType:UINT32)
[[1,  // argmax({1, 3, 2})
  2,  // argmax({2, 0, 5})
  1]] // argmax({3, 4, 2})

Exemplo 2. Aplicando argmax a linhas

AxisCount: 1
Axes: {1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{3, 1}, DataType:UINT32)
[[2], // argmax({1, 2, 3})
 [2], // argmax({3, 0, 4})
 [1]] // argmax({2, 5, 2})

Exemplo 3. Aplicando argmax a todos os eixos (o tensor inteiro)

AxisCount: 2
Axes: {0, 1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 1}, DataType:UINT32)
[[7]]  // argmax({1, 2, 3, 3, 0, 4, 2, 5, 2})

Comentários

Os tamanhos do tensor de saída devem ser iguais aos tamanhos do tensor de entrada, exceto para os eixos reduzidos, que devem ser 1.

Quando AxisDirection é DML_AXIS_DIRECTION_INCREASING, essa API é equivalente a DML_REDUCE_OPERATOR_DESC com DML_REDUCE_FUNCTION_ARGMAX.

Um subconjunto dessa funcionalidade é exposto por meio do operador DML_REDUCE_OPERATOR_DESC e tem suporte em níveis de recurso DirectML anteriores.

Disponibilidade

Esse operador foi introduzido em DML_FEATURE_LEVEL_3_0.

Restrições do Tensor

InputTensor e OutputTensor devem ter a mesma DimensionCount.

Suporte ao Tensor

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

Requisitos

   
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Cabeçalho directml.h