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 |