Condividi tramite


DML_CUMULATIVE_SUMMATION_OPERATOR_DESC struttura (directml.h)

Somma gli elementi di un tensore lungo un asse, scrivendo il conteggio in esecuzione della somma nel tensore di output.

Sintassi

struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
  DML_AXIS_DIRECTION    AxisDirection;
  BOOL                  HasExclusiveSum;
};

Members

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensore di input contenente elementi da sommare.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensore di output in cui scrivere le summazioni cumulative risultanti. Questo tensore deve avere le stesse dimensioni e tipo di dati dell'oggetto InputTensor.

Axis

Tipo: UINT

Indice della dimensione su cui sommare 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, la somma si verifica attraversando il tensore lungo l'asse specificato aumentando l'indice degli elementi. Se impostato su DML_AXIS_DIRECTION_DECREASING, il valore inverso è true e la somma si verifica attraversando gli elementi in base all'indice decrescente.

HasExclusiveSum

Tipo: BOOL

Se TRUE, il valore dell'elemento corrente viene escluso quando si scrive il 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 un tensore di input con le proprietà seguenti.

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
   [3, 8, 7, 3],
   [9, 6, 2, 4]]]]

Esempio 1. Somma cumulativa tra sliver orizzontali

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2,  3,  6, 11],     // i.e. [2, 2+1, 2+1+3, 2+1+3+5]
   [3, 11, 18, 21],     //      [...                   ]
   [9, 15, 17, 21]]]]   //      [...                   ]

Esempio 2. Somme esclusive

L'impostazione di HasExclusiveSum 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
HasExclusiveSum: TRUE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 2,  3,  6],      // Notice the sum is written before adding the input,
   [0, 3, 11, 18],      // and the final total is not written to any output.
   [0, 9, 15, 17]]]]

Esempio 3. Direzione asse

L'impostazione di AxisDirection su DML_AXIS_DIRECTION_DECREASING ha effetto di inversione dell'ordine di attraversamento degli elementi durante il calcolo del conteggio in esecuzione.

Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[11,  9,  8,  5],    // i.e. [2+1+3+5, 1+3+5, 3+5, 5]
   [21, 18, 10,  3],    //      [...                   ]
   [21, 12,  6,  4]]]]  //      [...                   ]

Esempio 4. Somma lungo un asse diverso

In questo esempio la somma si verifica verticalmente lungo l'asse di altezza (dimensione 2).

Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2,  1,  3,  5],   // i.e. [2,    ...]
   [ 5,  9, 10,  8],   //      [2+3,  ...]
   [14, 15, 12, 12]]]] //      [2+3+9 ...]

Commenti

Questo operatore supporta l'esecuzione sul posto, ovvero l'outputTensor è consentito per aliasre inputTensor durante l'associazione.

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_2_1.

Vincoli tensor

InputTensor e OutputTensor devono avere lo stesso oggetto DataType, DimensionCount e Sizes.

Supporto di Tensor

DML_FEATURE_LEVEL_5_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportate 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 supportate 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 supportate Tipi di dati supportati
InputTensor Input 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Output 4 FLOAT32, FLOAT16, INT32, UINT32

Requisiti

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