estrutura DML_SPLIT_OPERATOR_DESC (directml.h)
Divide um tensor de entrada ao longo de um eixo em vários tensores de saída.
Todos os tensores de entrada e saída devem ter os mesmos tamanhos, exceto para o eixo dividido. O tamanho do tensor de entrada no eixo dividido determina as possíveis divisões. Por exemplo, se o eixo dividido do tensor de entrada tiver o tamanho 3, haverá essas possíveis divisões: 1+1+1 (3 saídas), 1+2 (2 saídas), 2+1 (2 saídas) ou 3 (1 saída, que é simplesmente uma cópia do tensor de entrada). Os tamanhos dos eixos divididos dos tensores de saída devem somar exatamente o tamanho do eixo dividido do tensor de entrada. Essas restrições são ilustradas no pseudocódigo abaixo.
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]);
A divisão em um tensor de saída única simplesmente produz uma cópia do tensor de entrada.
Esse operador é o inverso de DML_JOIN_OPERATOR_DESC.
Sintaxe
struct DML_SPLIT_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
UINT OutputCount;
const DML_TENSOR_DESC *OutputTensors;
UINT Axis;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor a ser dividido em vários tensores de saída.
OutputCount
Tipo: UINT
Esse campo determina o tamanho da matriz OutputTensors . Esse valor deve ser maior que 0.
OutputTensors
Tipo: const DML_TENSOR_DESC*
Uma matriz que contém as descrições dos tensores divididos do tensor de entrada. Os tamanhos de saída devem ter os mesmos tamanhos que o tensor de entrada, exceto para o eixo dividido.
Axis
Tipo: UINT
O índice da dimensão do tensor de entrada a ser dividido. Todos os tensores de entrada e saída devem ter tamanhos idênticos em todas as dimensões, exceto para esse eixo. Esse valor deve estar no intervalo [0, InputTensor.DimensionCount - 1]
.
Exemplos
Os exemplos a seguir usam esse mesmo tensor de entrada.
InputTensor: (Sizes:{1, 1, 6, 2}, DataType:FLOAT32)
[[[[1, 2],
[3, 4],
[5, 6],
[7, 8],
[9, 10],
[11, 12]]]]
Exemplo 1. Eixo de divisão 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]]]]
Exemplo 2. Eixo de divisão 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]]]]
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_1_0
.
Restrições do Tensor
InputTensor e OutputTensors devem ter os mesmos DataType e DimensionCount.
Suporte ao Tensor
DML_FEATURE_LEVEL_4_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensors | Matriz de saídas | 1 a 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensors | Matriz de saídas | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensors | Matriz de saídas | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_1_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
OutputTensors | Matriz de saídas | 4 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | directml.h |