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 |