Share via


estrutura DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC (directml.h)

Inverte os elementos de uma ou mais subsequências de um tensor. O conjunto de subsequências a serem invertidas é escolhido com base nos comprimentos de sequência e eixo fornecidos.

Sintaxe

struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *SequenceLengthsTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

O tensor de entrada que contém elementos a serem invertidos.

SequenceLengthsTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém um valor para cada subsequência a ser invertida, indicando o comprimento em elementos dessa subsequência. Somente os elementos dentro do comprimento da subsequência são invertidos; os elementos restantes ao longo desse eixo são copiados para a saída inalterados.

Esse tensor deve ter a contagem de dimensões e tamanhos iguais ao InputTensor, exceto para a dimensão especificada pelo parâmetro Axis . O tamanho da dimensão Eixo deve ser 1. Por exemplo, se InputTensor tiver tamanhos de {2,3,4,5}e Axis for 1, os tamanhos de SequenceLengthsTensor deverão ser {2,1,4,5}.

Se o comprimento de uma subsequência exceder o número máximo de elementos ao longo desse eixo, esse operador se comportará como se o valor tivesse sido fixado ao máximo.

OutputTensor

Tipo: const DML_TENSOR_DESC*

O tensor de saída no qual gravar os resultados. Esse tensor deve ter os mesmos tamanhos e tipo de dados que o InputTensor.

Axis

Tipo: UINT

O índice da dimensão para inverter os elementos. Esse valor deve ser menor que o DimensionCount do InputTensor.

Exemplos

Exemplo 1

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

Axis: 3

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

Exemplo 2. Inverter ao longo de um eixo diferente

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1,  2,  3,  4],
   [5,  6,  7,  8],
   [9, 10, 11, 12]]]]
   
SequenceTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[2, 3, 1, 0]]]]

Axis: 2

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[5, 10,  3,  4], // Notice that sequence lengths of 1 and 0 are effective nops
   [1,  6,  7,  8],
   [9,  2, 11, 12]]]]

Disponibilidade

Esse operador foi introduzido no DML_FEATURE_LEVEL_2_1.

Restrições do Tensor

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

Suporte ao Tensor

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

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

Requisitos

   
Cabeçalho directml.h