다음을 통해 공유


DML_MAX_POOLING_GRAD_OPERATOR_DESC 구조체(directml.h)

최대 풀링에 대한 백프로포지션 그라데이션을 계산합니다( DML_MAX_POOLING2_OPERATOR_DESC 참조).

패딩이나 팽창이 없는 2x2 DML_MAX_POOLING2_OPERATOR_DESC 다음을 수행하는 1의 보폭을 고려합니다.

InputTensor             OutputTensor    IndicesTensor
[[1, 2, 3],   MaxPool    [[4, 4],        [[4, 4],
 [2, 4, 2],     -->       [6, 7]]         [7, 8]]
 [5, 6, 7]]

입력 텐서에서 각 2x2 창의 가장 큰 요소는 출력의 한 요소를 생성합니다. 다음은 유사한 매개 변수가 지정된 DML_MAX_POOLING_GRAD_OPERATOR_DESC 출력의 예입니다.

InputTensor   InputGradientTensor            OutputGradientTensor
[[1, 2, 3],       [[1, 2],     MaxPoolGrad   [[0, 0, 0],
 [2, 4, 2],        [4, 5]]         -->        [0, 3, 0],
 [5, 6, 7]]                                   [0, 4, 5]]

실제로 이 연산 자는 InputTensor 를 사용하여 각 창에서 가장 큰 요소의 인덱스를 확인하고 이러한 인덱스에 따라 InputGradientTensor 값을 OutputGradientTensor 에 분산합니다. 인덱스가 겹치는 경우 값의 합계가 계산됩니다. 참조되지 않은 출력 요소는 모두 0입니다.

창의 요소가 두 개 이상 같은 최대값을 갖는 tie의 경우 논리 요소 인덱스가 가장 낮은 요소가 선택됩니다.

구문

struct DML_MAX_POOLING_GRAD_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputGradientTensor;
  const DML_TENSOR_DESC *OutputGradientTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *WindowSize;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  const UINT            *Dilations;
};

멤버

InputTensor

형식: const DML_TENSOR_DESC*

입력 기능 텐서입니다. 일반적으로 전달 패스에서 DML_MAX_POOLING2_OPERATOR_DESCInputTensor로 제공된 것과 동일한 텐서입니다.

InputGradientTensor

형식: const DML_TENSOR_DESC*

들어오는 그라데이션 텐서입니다. 이는 일반적으로 이전 계층의 백프로포지션 출력에서 가져옵니다. 일반적으로 이 텐서의 크기는 전달 패스의 해당 DML_MAX_POOLING2_OPERATOR_DESC출력과 같습니다.

OutputGradientTensor

형식: const DML_TENSOR_DESC*

백프로페이팅된 그라데이션을 포함하는 출력 텐서입니다. 일반적으로 이 텐서의 크기는 전달 패스에 있는 해당 DML_MAX_POOLING2_OPERATOR_DESC입력과 같습니다.

DimensionCount

형식: UINT

Strides, WindowSize, StartPadding, EndPaddingDilations 배열의 요소 수입니다. 이 값은 공간 차원 수(InputTensor의 DimensionCount - 2)와 같아야 합니다. 이 연산자는 4D 텐서만 지원하므로 이 매개 변수에 유효한 값은 2뿐입니다.

Strides

형식: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESC진행을 참조하세요.

WindowSize

형식: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESCWindowSize를 참조하세요.

StartPadding

형식: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESCStartPadding을 참조하세요.

EndPadding

형식: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESCEndPadding을 참조하세요.

Dilations

형식: _Field_size_(DimensionCount) const UINT*

DML_MAX_POOLING2_OPERATOR_DESC팽창을 참조하세요.

가용성

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

텐서 제약 조건

  • InputGradientTensor, InputTensorOutputGradientTensor 에는 동일한 DataTypeDimensionCount가 있어야 합니다.
  • InputTensorOutputGradientTensor크기는 같아야 합니다.

텐서 지원

DML_FEATURE_LEVEL_4_0 이상

텐서 Kind 차원 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4~5 FLOAT32, FLOAT16
InputGradientTensor 입력 { BatchCount, ChannelCount, [OutputDepth], OutputHeight, OutputWidth } 4~5 FLOAT32, FLOAT16
OutputGradientTensor 출력 { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } 4~5 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_3_0 이상

텐서 Kind 차원 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32, FLOAT16
InputGradientTensor 입력 { BatchCount, ChannelCount, OutputHeight, OutputWidth } 4 FLOAT32, FLOAT16
OutputGradientTensor 출력 { BatchCount, ChannelCount, InputHeight, InputWidth } 4 FLOAT32, FLOAT16

요구 사항

   
지원되는 최소 클라이언트 Windows 10 빌드 20348
지원되는 최소 서버 Windows 10 빌드 20348
머리글 directml.h