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 |