다음을 통해 공유


DML_UNFOLD_OPERATOR_DESC 구조체(directml.h)

일괄 처리된 입력 텐서에서 슬라이딩 로컬 블록을 추출합니다.

셰이프(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 제약 조건

InputTensorOutputTensor 에는 동일한 DimensionCount가 있어야 합니다.

Tensor 지원

텐서 친절한 지원되는 차원 수 지원되는 데이터 형식
입력 텐서 입력 3~8
출력텐서 출력 3~8

요구 사항

   
머리글 directml.h