다음을 통해 공유


DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC 구조체(directml.h)

텐서의 하나 이상의 하위 시퀀스의 요소를 역방향으로 바꿉니다. 역방향으로 사용할 하위 시퀀스 집합은 제공된 축 및 시퀀스 길이에 따라 선택됩니다.

구문

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

멤버

InputTensor

형식: const DML_TENSOR_DESC*

반전할 요소를 포함하는 입력 텐서입니다.

SequenceLengthsTensor

형식: const DML_TENSOR_DESC*

역방향할 각 하위 시퀀스에 대한 값을 포함하는 텐서로, 해당 하위 시퀀스의 요소의 길이를 표시합니다. 하위 시퀀스의 길이 내에 있는 요소만 반대로 바뀝니다. 해당 축을 따라 나머지 요소는 변경되지 않고 출력에 복사됩니다.

이 텐서는 Axis 매개 변수로 지정된 차원을 제외하고 차원 개수 및 크기가 InputTensor와 같아야 합니다. 차원의 크기는 1이어야 합니다. 예를 들어 InputTensor{2,3,4,5}크기가 이고 이 1인 경우 SequenceLengthsTensor 의 크기는 이어야 {2,1,4,5}합니다.

하위 시퀀스의 길이가 해당 축을 따라 최대 요소 수를 초과하는 경우 이 연산자는 값이 최댓값으로 고정된 것처럼 동작합니다.

OutputTensor

형식: const DML_TENSOR_DESC*

결과를 쓸 출력 텐서입니다. 이 텐서는 InputTensor와 크기 및 데이터 형식이 동일해야 합니다.

Axis

형식: UINT

요소를 역방향으로 바꿀 차원의 인덱스입니다. 이 값은 InputTensor의 DimensionCount보다 작아야 합니다.

예제

예 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]]]]

예제 2. 다른 축을 따라 역방향

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]]]]

가용성

이 연산자는 에서 DML_FEATURE_LEVEL_2_1도입되었습니다.

텐서 제약 조건

  • InputTensor, OutputTensorSequenceLengthsTensor 에는 동일한 DimensionCount가 있어야 합니다.
  • InputTensorOutputTensor 에는 동일한 DataType이 있어야 합니다.

텐서 지원

DML_FEATURE_LEVEL_5_0 이상

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 1~8개 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
SequenceLengthsTensor 입력 1~8개 UINT64, UINT32
OutputTensor 출력 1~8개 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_4_0 이상

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 1~8개 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
SequenceLengthsTensor 입력 1~8개 Uint32
OutputTensor 출력 1~8개 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 이상

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 4~5개 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
SequenceLengthsTensor 입력 4~5개 Uint32
OutputTensor 출력 4~5개 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 이상

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
SequenceLengthsTensor 입력 4 Uint32
OutputTensor 출력 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

요구 사항

   
머리글 directml.h