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 |