Condividi tramite


DML_ARGMAX_OPERATOR_DESC struttura (directml.h)

Restituisce gli indici degli elementi con valori massimi all'interno di una o più dimensioni del tensore di input.

Ogni elemento di output è il risultato dell'applicazione di una riduzione argmax su un subset del tensore di input. La funzione argmax restituisce l'indice dell'elemento con valore massimo all'interno di un set di elementi di input. Gli elementi di input coinvolti in ogni riduzione sono determinati dagli assi di input forniti. Analogamente, ogni indice di output è rispetto agli assi di input forniti. Se vengono specificati tutti gli assi di input, l'operatore applica una singola riduzione argmax e produce un singolo elemento di output.

Sintassi

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

Members

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensore da cui leggere.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor in cui scrivere i risultati. Ogni elemento di output è il risultato di una riduzione argmax su un subset di elementi dell'oggetto InputTensor.

  • DimensionCount deve corrispondere a InputTensor.DimensionCount (il rango del tensore di input viene mantenuto).
  • Le dimensioni devono corrispondere a InputTensor.Sizes, ad eccezione delle dimensioni incluse negli assi ridotti, che devono essere dimensioni 1.

AxisCount

Tipo: UINT

Numero di assi da ridurre. Questo campo determina le dimensioni della matrice Assi .

Axes

Tipo: _Field_size_(AxisCount) const UINT*

Assi lungo cui ridurre. I valori devono trovarsi nell'intervallo [0, InputTensor.DimensionCount - 1].

AxisDirection

Tipo: DML_AXIS_DIRECTION

Determina l'indice da selezionare quando più elementi di input hanno lo stesso valore.

  • DML_AXIS_DIRECTION_INCREASING restituisce l'indice del primo elemento con valore massimo (ad esempio, argmax({3,2,1,2,3}) = 0)
  • DML_AXIS_DIRECTION_DECREASING restituisce l'indice dell'ultimo elemento con valore massimo (ad esempio, argmax({3,2,1,2,3}) = 4)

Esempio

Gli esempi in questa sezione usano tutti lo stesso tensore di input bidimensionale.

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

Esempio 1. Applicazione di argmax alle colonne

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})

Esempio 2. Applicazione di argmax alle righe

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})

Esempio 3. Applicazione di argmax a tutti gli assi (l'intero tensore)

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})

Commenti

Le dimensioni del tensore di output devono essere uguali alle dimensioni del tensore di input, ad eccezione degli assi ridotti, che devono essere 1.

Quando AxisDirection è DML_AXIS_DIRECTION_INCREASING, questa API equivale a DML_REDUCE_OPERATOR_DESC con DML_REDUCE_FUNCTION_ARGMAX.

Un subset di questa funzionalità viene esposto tramite l'operatore DML_REDUCE_OPERATOR_DESC ed è supportato nei livelli di funzionalità DirectML precedenti.

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_3_0.

Vincoli tensor

InputTensor e OutputTensor devono avere lo stesso DimensionCount.

Supporto di Tensor

DML_FEATURE_LEVEL_4_1 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportate Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Output da 1 a 8 INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_3_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportate Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Output da 1 a 8 INT64, INT32, UINT64, UINT32

Requisiti

   
Client minimo supportato Windows 10 Build 20348
Server minimo supportato Windows 10 Build 20348
Intestazione directml.h