일괄 처리된 입력 텐서에서 슬라이딩 로컬 블록을 추출합니다.
셰이프(N,C,*)가 있는 InputTensor를 고려합니다. 여기서 *는 임의의 공간 차원 수(<=6)입니다. 이 작업은 InputTensor 내의 각 슬라이딩 WindowSize 블록을 OutputTensor의 열로 평면화합니다. OutputTensor는 슬라이딩 로컬 블록을 포함하는 3D 텐서입니다. 예를 들어 이미지 패치, 셰이프(N,C×∏(WindowSizes),BlockCount) 여기서 N은 일괄 처리 차원이고, C×∏(WindowSizes)는 창 내의 값 수(창에는 각각 C 채널 벡터가 포함된 ∏(WindowSizes) 공간 위치가 있음)이며 BlockCount는 총 블록 수입니다. 인수는 다음을 충족해야 합니다.
BlocksPerDimension[d] = ( ( SpatialSize[d] + StartPadding[d] + EndPadding[d] - 팽창[d] * (WindowSizes[d] - 1) - 1 ) / 보폭[d] ) + 1
BlockCount = ∏d BlocksPerDimension[d]
위치:
- SpatialSize는 입력의 공간 차원(*)에 의해 형성됩니다.
- <0 = d < 차원 수
마지막 차원(열 차원)의 인덱싱 출력은 특정 블록 내의 모든 값을 제공합니다.
StartPadding, EndPadding, Strides 및 Dilations 인수는 슬라이딩 블록을 검색하는 방법을 지정합니다.
중요합니다
이 API는 DirectML 독립 실행형 재배포 가능 패키지의 일부로 사용할 수 있습니다( Microsoft.AI.DirectML 버전 1.15.1 이상 참조). 또한 DirectML 버전 기록 참조하세요.
문법
struct DML_UNFOLD_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
UINT DimensionCount;
_Field_size_(DimensionCount) const UINT* WindowSizes;
_Field_size_(DimensionCount) const UINT* Strides;
_Field_size_(DimensionCount) const UINT* Dilations;
_Field_size_(DimensionCount) const UINT* StartPadding;
_Field_size_(DimensionCount) const UINT* EndPadding;
};
구성원
InputTensor
형식: const DML_TENSOR_DESC*
읽을 입력 텐서입니다.
OutputTensor
형식: const DML_TENSOR_DESC*
결과를 쓸 출력 텐서입니다.
DimensionCount
형식: UINT
InputTensor의 공간 차원입니다.
DimensionCount 는 범위에 [1, 6]있어야 합니다.
WindowSizes
형식: _Field_size_(DimensionCount) const UINT*
슬라이딩 윈도우의 크기입니다.
Strides
형식: _Field_size_(DimensionCount) const UINT*
입력 공간 차원의 슬라이딩 윈도우( WindowSizes 차원 포함)의 보폭입니다. DML_TENSOR_DESC 포함된 텐서 보폭과는 별개입니다. 추출된 패치의 단계 크기입니다.
Dilations
형식: _Field_size_(DimensionCount) const UINT*
커널 점 사이의 공간을 크기 조정하여 입력 공간 차원의 슬라이딩 윈도우( WindowSizes 차원 포함)의 확장입니다. 추출된 패치의 팽창입니다.
StartPadding
형식: _Field_size_(DimensionCount) const UINT*
InputTensor의 각 공간 차원의 시작 부분에 적용할 암시적 0 패딩의 양을 포함하는 배열입니다. 원본 텐서의 안쪽 여백을 시작합니다.
EndPadding
형식: _Field_size_(DimensionCount) const UINT*
InputTensor의 각 공간 차원 끝에 적용할 암시적 0 패딩의 양을 포함하는 배열입니다. 원본 텐서의 끝 안쪽 여백입니다.
예시
예제 1.
1 채널이 펼쳐져 있습니다.
InputTensor: (Sizes:{1, 1, 5, 5}, DataType:FLOAT32)
[[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24.]]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {0, 0}
EndPadding: {0, 0}
OutputTensor: (Sizes:{1, 9, 9}, DataType:FLOAT32)
[[[ 0., 1., 2., 5., 6., 7., 10., 11., 12.],
[ 1., 2., 3., 6., 7., 8., 11., 12., 13.],
[ 2., 3., 4., 7., 8., 9., 12., 13., 14.],
[ 5., 6., 7., 10., 11., 12., 15., 16., 17.],
[ 6., 7., 8., 11., 12., 13., 16., 17., 18.],
[ 7., 8., 9., 12., 13., 14., 17., 18., 19.],
[10., 11., 12., 15., 16., 17., 20., 21., 22.],
[11., 12., 13., 16., 17., 18., 21., 22., 23.],
[12., 13., 14., 17., 18., 19., 22., 23., 24.]]]
예제 2.
1 채널, 패딩 접기.
InputTensor: (Sizes:{1, 1, 5, 5}, DataType:FLOAT32)
[[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24.]]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 9, 15}, DataType:FLOAT32)
[[[ 0., 0., 0., 0., 1., 2., 5., 6., 7., 10., 11., 12., 15., 16., 17.],
[ 0., 0., 0., 1., 2., 3., 6., 7., 8., 11., 12., 13., 16., 17., 18.],
[ 0., 0., 0., 2., 3., 4., 7., 8., 9., 12., 13., 14., 17., 18., 19.],
[ 0., 1., 2., 5., 6., 7., 10., 11., 12., 15., 16., 17., 20., 21., 22.],
[ 1., 2., 3., 6., 7., 8., 11., 12., 13., 16., 17., 18., 21., 22., 23.],
[ 2., 3., 4., 7., 8., 9., 12., 13., 14., 17., 18., 19., 22., 23., 24.],
[ 5., 6., 7., 10., 11., 12., 15., 16., 17., 20., 21., 22., 0., 0., 0.],
[ 6., 7., 8., 11., 12., 13., 16., 17., 18., 21., 22., 23., 0., 0., 0.],
[ 7., 8., 9., 12., 13., 14., 17., 18., 19., 22., 23., 24., 0., 0., 0.]]]
가용도
이 연산자는 DML_FEATURE_LEVEL_6_4 도입되었습니다.
Tensor 제약 조건
InputTensor 및 OutputTensor 에는 동일한 DimensionCount가 있어야 합니다.
Tensor 지원
| 텐서 | 친절한 | 지원되는 차원 수 | 지원되는 데이터 형식 |
|---|---|---|---|
| 입력 텐서 | 입력 | 3~8 | |
| 출력텐서 | 출력 | 3~8 |
요구 사항
| 머리글 | directml.h |