Condividi tramite


struttura DML_SPLIT_OPERATOR_DESC (directml.h)

Suddivide un tensore di input lungo un asse in più tensori di output.

Tutti i tensori di input e output devono avere le stesse dimensioni, ad eccezione dell'asse di divisione. Le dimensioni del tensore di input nell'asse di divisione determinano le possibili divisioni. Ad esempio, se l'asse di divisione del tensore di input ha dimensioni 3, esistono queste potenziali divisioni: 1+1+1 (3 output), 1+2 (2 output), 2+1 (2 output) o 3 (1 output, che è semplicemente una copia del tensore di input). Le dimensioni dell'asse di divisione dei tensori di output devono sommare esattamente le dimensioni dell'asse di divisione del tensore di input. Questi vincoli sono illustrati nello pseudocodice seguente.

splitSize = 0;

for (i = 0; i < OutputCount; i++) {
    assert(outputTensors[i]->DimensionCount == inputTensor->DimensionCount);
    for (dim = 0; dim < inputTensor->DimensionCount; dim++) {
        if (dim == Axis) { splitSize += outputTensors[i]->Sizes[dim]; }
        else { assert(outputTensors[i]->Sizes[dim] == inputTensor->Sizes[dim]); }
    }
}

assert(splitSize == inputTensor->Sizes[Axis]);

La suddivisione in un singolo tensore di output produce semplicemente una copia del tensore di input.

Questo operatore è l'inverso di DML_JOIN_OPERATOR_DESC.

Sintassi

struct DML_SPLIT_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  UINT                  OutputCount;
  const DML_TENSOR_DESC *OutputTensors;
  UINT                  Axis;
};

Members

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensore da dividere in più tensori di output.

OutputCount

Tipo: UINT

Questo campo determina le dimensioni della matrice OutputTensors . Questo valore deve essere maggiore di 0.

OutputTensors

Tipo: const DML_TENSOR_DESC*

Matrice contenente le descrizioni dei tensori suddivisi dal tensore di input. Le dimensioni dell'output devono avere le stesse dimensioni del tensore di input, ad eccezione dell'asse di divisione.

Axis

Tipo: UINT

Indice della dimensione del tensore di input da dividere. Tutti i tensori di input e output devono avere dimensioni identiche in tutte le dimensioni, ad eccezione di questo asse. Questo valore deve essere compreso nell'intervallo [0, InputTensor.DimensionCount - 1].

Esempio

Negli esempi seguenti viene usato lo stesso tensore di input.

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

Esempio 1. Asse di divisione 2

OutputCount: 3
Axis: 2

OutputTensors[0]: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[1, 2],
   [3, 4]]]]

OutputTensors[1]: (Sizes:{1, 1, 1, 2}, DataType:FLOAT32)
[[[[5, 6]]]]

OutputTensors[2]: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[7, 8],
   [9, 10],
   [11, 12]]]]

Esempio 2. Asse di divisione 3

OutputCount: 2
Axis: 3

OutputTensors[0]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[1],
   [3],
   [5],
   [7],
   [9],
   [11]]]]

OutputTensors[1]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[2],
   [4],
   [6],
   [8],
   [10],
   [12]]]]

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0.

Vincoli tensor

InputTensor e OutputTensors 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
OutputTensors Matrice di 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
OutputTensors Matrice di 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, INT16, INT8, UINT32, UINT16, UINT8
OutputTensors Matrice di output 4 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 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16
OutputTensors Matrice di output 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16

Requisiti

Requisito Valore
Intestazione directml.h