Condividi tramite


DML_REDUCE_OPERATOR_DESC struttura (directml.h)

Restituisce la riduzione degli elementi (somma, prodotto, minimo e così via) all'interno di una o più dimensioni del tensore di input.

Ogni elemento di output è il risultato dell'applicazione di una funzione di riduzione su un subset del tensore di input. Una funzione di riduzione, ad esempio somma, esegue il mapping N degli elementi di input a un singolo elemento di output. Gli elementi di input coinvolti in ogni riduzione sono determinati dagli assi di input forniti: N è uguale al prodotto delle dimensioni degli assi ridotti. Se vengono specificati tutti gli assi di input, l'operatore esegue una riduzione sull'intero tensore di input e produce un singolo elemento di output.

Sintassi

struct DML_REDUCE_OPERATOR_DESC {
  DML_REDUCE_FUNCTION   Function;
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
};

Members

Function

Tipo: DML_REDUCE_FUNCTION

Specifica la funzione di riduzione da applicare all'input.

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 di un subset di elementi da 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].

Esempio

Gli esempi seguenti usano tutti lo stesso tensore di input bidimensionale.

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

Esempio 1. Applicazione della somma alle colonne

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

Esempio 2. Applicazione della somma alle righe

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

Esempio 3.Applicazione della somma a tutti gli assi (intero tensore)

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

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0.

Vincoli tensor

  • I tipi di dati di input e di output devono corrispondere tranne quando si usano le funzioni ARGMAX e ARGMIN, che generano sempre un tipo di dati integrale.
  • Le dimensioni dell'output devono essere uguali alle dimensioni di input, ad eccezione degli assi ridotti, che devono essere 1.

Supporto tensor in base alla funzione

ARGMIN e ARGMAX

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

DML_FEATURE_LEVEL_2_1 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportate Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Output 4 UINT32

DML_FEATURE_LEVEL_1_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportate Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16
OutputTensor Output 4 UINT32

MEDIA, L2, LOG_SUM e LOG_SUM_EXP

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
OutputTensor Output da 1 a 8 FLOAT32, FLOAT16
DML_FEATURE_LEVEL_1_0 e versioni successive
Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16
OutputTensor Output 4 FLOAT32, FLOAT16

L1 e SUM_SQUARE

DML_FEATURE_LEVEL_5_0 e versioni successive
Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Output da 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_3_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT32, FLOAT16
OutputTensor Output da 1 a 8 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_1_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16
OutputTensor Output 4 FLOAT32, FLOAT16

MIN e MAX

DML_FEATURE_LEVEL_5_0 e versioni successive
Tensore Tipo Conteggi delle dimensioni supportati 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 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 e versioni successive

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

DML_FEATURE_LEVEL_2_1 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Output 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16
OutputTensor Output 4 FLOAT32, FLOAT16

MULTIPLI e SUM

DML_FEATURE_LEVEL_5_0 e versioni successive
Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32
OutputTensor Output da 1 a 8 FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_3_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Output da 1 a 8 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_2_1 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Output 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16
OutputTensor Output 4 FLOAT32, FLOAT16

Requisiti

Requisito Valore
Intestazione directml.h

Vedi anche

Il livello di funzionalità 3_0 ha introdotto questi operatori autonomi che sostituiscono le funzionalità disponibili con DML_REDUCE_FUNCTION_ARGMAX e DML_REDUCE_FUNCTION_ARGMIN.