Compartilhar via


estrutura DML_SLICE_OPERATOR_DESC (directml.h)

Extrai uma única sub-região (uma "fatia") de um tensor de entrada.

Os elementos copiados na fatia são determinados usando três valores para cada dimensão.

  • O deslocamento marca o primeiro elemento a ser copiado em uma dimensão.
  • O tamanho marca o número de elementos a serem copiados em uma dimensão.
  • O passo indica o incremento ou a etapa do elemento em uma dimensão.

Os Deslocamentos, Tamanhos e Passos fornecidos devem apenas copiar elementos que estão dentro dos limites do tensor de entrada (leituras fora dos limites não são permitidas). Os Tamanhos da fatia devem corresponder exatamente aos tamanhos do tensor de saída. Em geral, os elementos copiados são calculados da seguinte maneira.

OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]

Sintaxe

struct DML_SLICE_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  DimensionCount;
  const UINT            *Offsets;
  const UINT            *Sizes;
  const UINT            *Strides;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

O tensor do qual extrair fatias.

OutputTensor

Tipo: const DML_TENSOR_DESC*

O tensor no qual gravar os resultados dos dados fatiados.

DimensionCount

Tipo: UINT

O número de dimensões. Esse campo determina o tamanho das matrizes Offsets, Sizes e Strides . Esse valor deve corresponder ao DimensionCount dos tensores de entrada e saída. Esse valor deve estar entre 1 e 8, inclusive, a partir de DML_FEATURE_LEVEL_3_0; os níveis de recursos anteriores exigem um valor de 4 ou 5.

Offsets

Tipo: _Field_size_(DimensionCount) const UINT*

Uma matriz que contém o início da fatia ao longo de cada dimensão do tensor de entrada, em elementos .

Sizes

Tipo: _Field_size_(DimensionCount) const UINT*

Uma matriz que contém o tamanho da fatia ao longo de cada dimensão, em elementos . Os valores nessa matriz devem corresponder aos tamanhos especificados no tensor de saída.

Strides

Tipo: _Field_size_(DimensionCount) const UINT*

Uma matriz que contém o passo da fatia ao longo de cada dimensão do tensor de entrada, em elementos . Um passo maior que 1 indica que os elementos do tensor de entrada podem ser ignorados (por exemplo, um passo de 2 selecionará cada segundo elemento ao longo da dimensão).

Exemplos

Os exemplos a seguir usam o mesmo tensor de entrada:

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

Exemplo 1. Fatia contígua

Offsets = {0, 0, 1, 2}
Sizes   = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}

OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7,  8],
   [11, 12],
   [15, 16]]]]

Exemplo 2. Fatia passo a passo

Offsets = {0, 0, 1, 0}
Sizes   = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}

OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5,  8],
   [13, 16]]]]

Comentários

Uma versão mais recente desse operador, DML_SLICE1_OPERATOR_DESC, foi introduzida no DML_FEATURE_LEVEL_2_1.

Disponibilidade

Esse operador foi introduzido no DML_FEATURE_LEVEL_1_0.

Restrições do Tensor

InputTensor e OutputTensor 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
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
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 a 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Saída 4 a 5 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 a 5 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16
OutputTensor Saída 4 a 5 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16

Requisitos

Requisito Valor
Cabeçalho directml.h