struttura DML_CUMULATIVE_PRODUCT_OPERATOR_DESC (directml.h)
Moltiplica gli elementi di un tensore lungo un asse, scrivendo il conteggio in esecuzione del prodotto nel tensore di output.
Sintassi
struct DML_CUMULATIVE_PRODUCT_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
DML_AXIS_DIRECTION AxisDirection;
BOOL HasExclusiveProduct;
};
Members
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di input. Si tratta in genere dello stesso tensore fornito come InputTensor per DML_BATCH_NORMALIZATION_OPERATOR_DESC nel passaggio avanti.
Tensore di input contenente elementi da moltiplicare.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output in cui scrivere i prodotti cumulativi risultanti. Questo tensore deve avere le stesse dimensioni e il tipo di dati di InputTensor.
Axis
Tipo: UINT
Indice della dimensione per moltiplicare gli elementi. Questo valore deve essere minore di DimensionCountdell'oggetto InputTensor.
AxisDirection
Tipo: DML_AXIS_DIRECTION
Uno dei valori dell'enumerazione DML_AXIS_DIRECTION . Se impostato su DML_AXIS_DIRECTION_INCREASING, il prodotto si verifica attraversando il tensore lungo l'asse specificato tramite l'indice degli elementi crescente. Se impostato su DML_AXIS_DIRECTION_DECREASING, il valore inverso è true e il prodotto si verifica attraversando gli elementi in base all'indice decrescente.
HasExclusiveProduct
Tipo: BOOL
Se TRUE, il valore dell'elemento corrente viene escluso durante la scrittura del conteggio in esecuzione nel tensore di output. Se FALSE, il valore dell'elemento corrente viene incluso nel conteggio in esecuzione.
Esempio
Gli esempi in questa sezione usano tutti lo stesso tensore di input.
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
[3, 8, 7, 3],
[9, 6, 2, 4]]]]
Esempio 1. Prodotto cumulativo tra slivers orizzontali
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 2, 6, 30], // i.e. [2, 2*1, 2*1*3, 2*1*3*5]
[3, 24, 168, 504], // [... ]
[9, 54, 108, 432]]]] // [... ]
Esempio 2. Prodotti esclusivi
L'impostazione di HasExclusiveProduct su TRUE ha l'effetto di escludere il valore dell'elemento corrente dal conteggio in esecuzione durante la scrittura nel tensore di output.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: TRUE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 6], // Notice the product is written before multiplying the input,
[1, 3, 24, 168], // and the final total is not written to any output.
[1, 9, 54, 108]]]]
Esempio 3. Direzione dell'asse
L'impostazione di AxisDirection su DML_AXIS_DIRECTION_DECREASING ha l'effetto di invertire l'ordine di attraversamento degli elementi durante il calcolo del tally in esecuzione.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 30, 15, 15, 5], // i.e. [2*1*3*5, 1*3*5, 3*5, 5]
[504, 168, 21, 3], // [... ]
[432, 48, 8, 4]]]] // [... ]
Esempio 4. Moltiplicazione lungo un asse diverso
In questo esempio il prodotto si verifica verticalmente lungo l'asse dell'altezza (seconda dimensione).
Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2, 1, 3, 5], // i.e. [2, ...]
[ 6, 8, 21, 15], // [2*3, ...]
[54, 48, 42, 60]]]] // [2*3*9 ...]
Commenti
Questo operatore supporta l'esecuzione sul posto, vale a dire che il tensore di output è autorizzato ad alias InputTensor durante l'associazione.
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_3_1
.
Vincoli tensor
InputTensor e OutputTensor devono avere gli stessi Valori DataType, DimensionCount e Size.
Supporto di Tensor
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_4_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_3_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 |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Build 22000 |
Server minimo supportato | Windows Build 22000 |
Intestazione | directml.h |