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, OutputTensor 및 SequenceLengthsTensor 에는 동일한 DimensionCount가 있어야 합니다.
- InputTensor 및 OutputTensor 에는 동일한 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 |