Compartilhar via


estrutura DML_GATHER_ELEMENTS_OPERATOR_DESC (directml.h)

Coleta elementos do tensor de entrada ao longo do eixo fornecido usando o tensor de índices para remapear para a entrada. Esse operador executa o pseudocódigo a seguir, com o comportamento exato dependente do eixo, da contagem de dimensões de entrada e da contagem de dimensões de índices.

output[i, j, k, ...] = input[index[i, j, k, ...], j, k, ...] // if axis == 0
output[i, j, k, ...] = input[i, index[i, j, k, ...], k, ...] // if axis == 1
output[i, j, k, ...] = input[i, j, index[i, j, k, ...], ...] // if axis == 2
...

Sintaxe

struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *IndicesTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

O tensor do qual ler.

IndicesTensor

Tipo: const DML_TENSOR_DESC*

Os índices no tensor de entrada ao longo do eixo ativo. Os Tamanhos devem corresponder a InputTensor.Sizes para cada dimensão, exceto Axis.

DML_FEATURE_LEVEL_3_0A partir do , esse operador dá suporte a valores de índice negativos ao usar um tipo integral assinado com esse tensor. Índices negativos são interpretados como sendo relativos ao final da dimensão do eixo. Por exemplo, um índice de -1 refere-se ao último elemento nessa dimensão.

OutputTensor

Tipo: const DML_TENSOR_DESC*

O tensor no qual gravar os resultados. Os Tamanhos devem corresponder a IndicesTensor.Sizes e DataType deve corresponder a InputTensor.DataType.

Axis

Tipo: UINT

A dimensão do eixo de InputTensor a ser coletada, variando [0, *InputTensor.DimensionCount*).

Exemplos

Axis = 0

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

IndicesTensor: (Sizes:{2,3}, DataType:UINT32)
    [[1, 2, 0],
     [2, 0, 0]]

// output[y, x] = input[indices[y, x], x]
OutputTensor: (Sizes:{2,3}, DataType:UINT32)
    [[4, 8, 3], // select elements vertically from data
     [7, 2, 3]]

Disponibilidade

Esse operador foi introduzido no DML_FEATURE_LEVEL_2_1.

Restrições do Tensor

  • IndicesTensor, InputTensor e OutputTensor devem ter o mesmo DimensionCount.
  • InputTensor e OutputTensor devem ter o mesmo DataType.

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
IndicesTensor Entrada 1 a 8 INT64, INT32, UINT64, UINT32
OutputTensor Saída 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
IndicesTensor Entrada 1 a 8 INT64, INT32, UINT64, UINT32
OutputTensor Saída 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
IndicesTensor Entrada 4 UINT32
OutputTensor Saída 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Cabeçalho directml.h