struttura DML_SLICE_OPERATOR_DESC (directml.h)

Estrae una singola sottoregione (una "sezione") di un tensore di input.

Gli elementi copiati nella sezione vengono determinati utilizzando tre valori per ogni dimensione.

  • L'offset contrassegna il primo elemento da copiare in una dimensione.
  • La dimensione contrassegna il numero di elementi da copiare in una dimensione.
  • Lo stride indica l'incremento o il passaggio dell'elemento in una dimensione.

Gli offset, le dimensioni e gli stride forniti devono copiare solo gli elementi che si trovano entro i limiti del tensore di input (le letture out-of-bounds non sono consentite). Le dimensioni della sezione devono corrispondere esattamente alle dimensioni del tensore di output. In generale, gli elementi copiati vengono calcolati come segue.

OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]

Sintassi

struct DML_SLICE_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  DimensionCount;
  const UINT            *Offsets;
  const UINT            *Sizes;
  const UINT            *Strides;
};

Members

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensore da cui estrarre le sezioni.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensore in cui scrivere i risultati dei dati sezionati.

DimensionCount

Tipo: UINT

Numero di dimensioni. Questo campo determina le dimensioni delle matrici Offset, Sizes e Strides . Questo valore deve corrispondere al Valore DimensionCount dei tensori di input e output. Questo valore deve essere compreso tra 1 e 8, inclusi, a partire da DML_FEATURE_LEVEL_3_0. I livelli di funzionalità precedenti richiedono un valore pari a 4 o 5.

Offsets

Tipo: _Field_size_(DimensionCount) const UINT*

Matrice contenente l'inizio della sezione lungo ogni dimensione del tensore di input, negli elementi .

Sizes

Tipo: _Field_size_(DimensionCount) const UINT*

Matrice contenente le dimensioni della sezione lungo ogni dimensione, negli elementi. I valori in questa matrice devono corrispondere alle dimensioni specificate nel tensore di output.

Strides

Tipo: _Field_size_(DimensionCount) const UINT*

Matrice contenente lo stride della sezione lungo ogni dimensione del tensore di input, negli elementi . Uno stride maggiore di 1 indica che gli elementi del tensore di input possono essere ignorati( ad esempio, uno stride di 2 selezionerà ogni secondo elemento lungo la dimensione).

Esempio

Gli esempi seguenti usano lo stesso tensore di input:

InputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 1,  2,  3,  4],
   [ 5,  6,  7,  8],
   [ 9, 10, 11, 12],
   [13, 14, 15, 16]]]]

Esempio 1. Sezione contigua

Offsets = {0, 0, 1, 2}
Sizes   = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}

OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7,  8],
   [11, 12],
   [15, 16]]]]

Esempio 2. Sezione Strided

Offsets = {0, 0, 1, 0}
Sizes   = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}

OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5,  8],
   [13, 16]]]]

Commenti

Una versione più recente di questo operatore, DML_SLICE1_OPERATOR_DESC, è stata introdotta in DML_FEATURE_LEVEL_2_1.

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0.

Vincoli tensor

InputTensor e OutputTensor devono avere lo stesso Tipo di dati e DimensionCount.

Supporto di Tensor

DML_FEATURE_LEVEL_4_1 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Output da 1 a 8 FLOAT64, 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 da 4 a 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Output da 4 a 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_1_0 e versioni successive

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Input da 4 a 5 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16
OutputTensor Output da 4 a 5 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16

Requisiti

Requisito Valore
Intestazione directml.h