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