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.