DML_CONVOLUTION_OPERATOR_DESC 구조체(directml.h)
InputTensor를 사용하여 FilterTensor의 구성을 수행합니다. 이 연산자는 다양한 표준 나선형 구성을 지원합니다. 이러한 표준 구성에는 방향 및 모드 필드를 설정하여 정방향 및 뒤로(변환된) 나선형과 GroupCount 필드를 설정하여 깊이 단위의 나선형이 포함됩니다.
관련된 단계 요약: 출력 텐서로의 구성을 수행합니다. 출력 텐서와 동일한 차원 크기로 바이어스를 변형합니다. 변형된 바이어스 텐서를 출력 텐서에 추가합니다.
구문
struct DML_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputTensor;
DML_CONVOLUTION_MODE Mode;
DML_CONVOLUTION_DIRECTION Direction;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
const UINT *OutputPadding;
UINT GroupCount;
const DML_OPERATOR_DESC *FusedActivation;
};
멤버
InputTensor
형식: const DML_TENSOR_DESC*
입력 데이터를 포함하는 텐서입니다. InputTensor의 예상 차원은 다음과 같습니다.
{ BatchCount, InputChannelCount, InputWidth }
3D의 경우{ BatchCount, InputChannelCount, InputHeight, InputWidth }
4D의 경우 및{ BatchCount, InputChannelCount, InputDepth, InputHeight, InputWidth }
5D의 경우
FilterTensor
형식: const DML_TENSOR_DESC*
필터 데이터를 포함하는 텐서입니다. FilterTensor의 예상 차원은 다음과 같습니다.
{ FilterBatchCount, FilterChannelCount, FilterWidth }
3D의 경우{ FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
4D의 경우 및{ FilterBatchCount, FilterChannelCount, FilterDepth, FilterHeight, FilterWidth }
5D의 경우
BiasTensor
형식: _Maybenull_ const DML_TENSOR_DESC*
바이어스 데이터를 포함하는 선택적 텐서입니다. 바이어스 텐서는 결과에 추가되는 컨볼루션의 끝에 있는 출력 텐서에서 브로드캐스트되는 데이터를 포함하는 텐서입니다. BiasTensor의 예상 차원은 다음과 같습니다.
{ 1, OutputChannelCount, 1 }
3D의 경우{ 1, OutputChannelCount, 1, 1 }
4D의 경우 및{ 1, OutputChannelCount, 1, 1, 1 }
5D의 경우
각 출력 채널에 대해 해당 채널의 단일 바이어스 값이 OutputTensor의 해당 채널에 있는 모든 요소에 추가됩니다. 즉, BiasTensor 는 OutputTensor의 크기로 브로드캐스트되고 연산자가 반환하는 것은 이 브로드캐스트된 BiasTensor 의 합계와 컨볼루션의 결과입니다.
OutputTensor
형식: const DML_TENSOR_DESC*
결과를 쓸 텐서입니다. OutputTensor의 예상 차원은 다음과 같습니다.
{ BatchCount, OutputChannelCount, OutputWidth }
3D의 경우{ BatchCount, OutputChannelCount, OutputHeight, OutputWidth }
4D의 경우 및{ BatchCount, OutputChannelCount, OutputDepth, OutputHeight, OutputWidth }
5D의 경우
Mode
나선형 작업에 사용할 모드입니다. DML_CONVOLUTION_MODE_CROSS_CORRELATION 일반적인 유추 시나리오에 필요한 동작입니다. 반면 , DML_CONVOLUTION_MODE_CONVOLUTION 각 공간 차원을 따라 각 필터 커널의 요소 순서를 대칭 이동합니다.
Direction
나선형 연산의 방향입니다. DML_CONVOLUTION_DIRECTION_FORWARD 학습 중에 DML_CONVOLUTION_DIRECTION_FORWARD 및DML_CONVOLUTION_DIRECTION_BACKWARD 조합이 사용되는 유추에 사용되는 기본 형태의 나선형입니다.
DimensionCount
형식: UINT
나선형 작업의 공간 차원 수입니다. 공간 차원은 컨볼루션 FilterTensor의 하위 차원입니다. 예를 들어 너비 및 높이 차원은 4D 나선형 필터 텐서의 공간 차원입니다. 이 값은 Strides, Dilations, StartPadding, EndPadding 및 OutputPadding 배열의 크기도 결정합니다. InputTensor.DimensionCount가 4이면 2로, InputTensor.DimensionCount가 5이면 3으로 설정해야 합니다.
Strides
형식: _Field_size_(DimensionCount) const UINT*
나선형 작업의 보폭을 포함하는 배열입니다. 이러한 보폭은 나선형 필터에 적용됩니다. DML_TENSOR_DESC 포함된 텐서 보폭과는 별개입니다.
Dilations
형식: _Field_size_(DimensionCount) const UINT*
컨볼루션 작업의 팽창을 포함하는 배열입니다. 확장은 필터 커널의 요소에 적용되는 보폭입니다. 내부 필터 커널 요소를 0으로 패딩하여 더 큰 필터 커널을 시뮬레이션하는 효과가 있습니다.
StartPadding
형식: _Field_size_(DimensionCount) const UINT*
필터의 각 공간 차원의 시작 부분에 적용할 안쪽 여백 값과 나선형 작업의 입력 텐서를 포함하는 배열입니다. 시작 안쪽 여백 값은 방향 필드에 따라 해석됩니다.
EndPadding
형식: _Field_size_(DimensionCount) const UINT*
필터의 각 공간 차원 끝에 적용할 안쪽 여백 값과 나선형 작업의 입력 텐서가 들어 있는 배열입니다. 끝 안쪽 여백 값은 방향 필드에 따라 해석됩니다.
OutputPadding
형식: _Field_size_(DimensionCount) const UINT*
컨볼루션 작업의 출력 안쪽 여백을 포함하는 배열입니다. OutputPadding 은 0 패딩을 컨볼루션 결과에 적용합니다. 이 패딩은 출력 텐서의 각 공간 차원 끝에 적용됩니다.
GroupCount
형식: UINT
컨볼루션 작업을 나눌 그룹 수입니다. 이는 GroupCount를 입력 채널 수와 같고 방향이 DML_CONVOLUTION_DIRECTION_FORWARD 같음으로 설정하여 깊이를 구성하는 데 사용할 수 있습니다. 이렇게 하면 컨볼루션을 입력 채널당 별도의 나선형으로 나눕니다.
FusedActivation
형식: _Maybenull_ const DML_OPERATOR_DESC*
컨볼루션 이후에 적용할 선택적 융합 활성화 계층입니다. 자세한 내용은 성능 향상을 위해 융합 연산자 사용을 참조하세요.
모드 상호 작용
나선형 모드 | 나선형 방향 | 필터 방향 |
---|---|---|
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_FORWARD | 필터에 ID 방향이 있습니다. |
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_BACKWARD | 필터는 x,y축을 따라 변환됩니다. |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_FORWARD | 필터는 x,y축을 따라 변환됩니다. |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_BACKWARD | 필터에 ID 방향이 있습니다. |
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_1_0
도입되었습니다.
텐서 제약 조건
BiasTensor, FilterTensor, InputTensor 및 OutputTensor 에는 동일한 DataType 및 DimensionCount가 있어야 합니다.
텐서 지원
DML_FEATURE_LEVEL_4_0 이상
텐서 | 종류 | 차원 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|---|
InputTensor | 입력 | { BatchCount, InputChannelCount, [InputDepth], [InputHeight], InputWidth } | 3 ~ 5 | FLOAT32, FLOAT16 |
FilterTensor | 입력 | { FilterBatchCount, FilterChannelCount, [FilterDepth], [FilterHeight], FilterWidth } | 3 ~ 5 | FLOAT32, FLOAT16 |
BiasTensor | 선택적 입력 | { 1, OutputChannelCount, [1], [1], 1 } | 3 ~ 5 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | { BatchCount, OutputChannelCount, [OutputDepth], [OutputHeight], OutputWidth } | 3 ~ 5 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_1_0 이상
텐서 | 종류 | 차원 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|---|
InputTensor | 입력 | { BatchCount, InputChannelCount, [InputDepth], InputHeight, InputWidth } | 4~5개 | FLOAT32, FLOAT16 |
FilterTensor | 입력 | { FilterBatchCount, FilterChannelCount, [FilterDepth], FilterHeight, FilterWidth } | 4~5개 | FLOAT32, FLOAT16 |
BiasTensor | 선택적 입력 | { 1, OutputChannelCount, [1], 1, 1 } | 4~5개 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | { BatchCount, OutputChannelCount, [OutputDepth], OutputHeight, OutputWidth } | 4~5개 | FLOAT32, FLOAT16 |
요구 사항
요구 사항 | 값 |
---|---|
헤더 | directml.h |