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, EndPadding 및 Dilations 배열의 요소 수입니다. 이 값은 공간 차원 수(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, InputTensor 및 OutputGradientTensor 에는 동일한 DataType 및 DimensionCount가 있어야 합니다.
- InputTensor 및 OutputGradientTensor 의 크기는 같아야 합니다.
텐서 지원
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 |