DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC 구조체(directml.h)
정량화된 데이터에 대해 행렬 곱하기 함수를 수행합니다. 이 연산자는 입력을 기준으로 한 다음 행렬을 곱한 다음 출력을 정량화하는 것과 수학적으로 동일합니다.
이 연산자를 사용하려면 행렬에 입력 텐서를 곱하여 { BatchCount, ChannelCount, Height, Width }
형식이 지정된 4D여야 합니다. 행렬 곱하기 연산자는 BatchCount * 독립 행렬 곱셈의 ChannelCount 번호를 수행합니다.
예를 들어
함수 시퀀스 해제
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
함수 수량화
f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)
통사론
struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC {
const DML_TENSOR_DESC *ATensor;
const DML_TENSOR_DESC *AScaleTensor;
const DML_TENSOR_DESC *AZeroPointTensor;
const DML_TENSOR_DESC *BTensor;
const DML_TENSOR_DESC *BScaleTensor;
const DML_TENSOR_DESC *BZeroPointTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
};
회원
ATensor
형식: const DML_TENSOR_DESC*
A 데이터를 포함하는 텐서입니다. 이 텐서의 차원은 { BatchCount, ChannelCount, M, K }
합니다.
AScaleTensor
형식: const DML_TENSOR_DESC*
ATensor 크기 조정 데이터를 포함하는 텐서입니다.
AScaleTensor
예상 차원은 텐서당 정량화가 필요한 경우 { 1, 1, 1, 1 }
, 행당 정량화가 필요한 경우 { 1, 1, M, 1 }
. 이러한 크기 조정 값은 A 값의 시한을 지정하는 데 사용됩니다.
메모
배율 값이 0이면 정의되지 않은 동작이 발생합니다.
AZeroPointTensor
형식: _Maybenull_ const DML_TENSOR_DESC*
ATensor 0포인트 데이터를 포함하는 선택적 텐서입니다. AZeroPointTensor의 예상 차원은 텐서당 정량화가 필요한 경우 { 1, 1, 1, 1 }
행당 정량화가 필요한 경우 { 1, 1, M, 1 }
. 이러한 0포인트 값은 ATensor 값의 시한을 지정하는 데 사용됩니다.
BTensor
형식: const DML_TENSOR_DESC*
B 데이터를 포함하는 텐서입니다. 이 텐서의 차원은 { BatchCount, ChannelCount, K, N }
합니다.
BScaleTensor
형식: const DML_TENSOR_DESC*
BTensor 크기 조정 데이터를 포함하는 텐서입니다.
BScaleTensor
예상 차원은 텐서 수량화당 필요한 경우 { 1, 1, 1, 1 }
열당 정량화가 필요한 경우 { 1, 1, 1, N }
. 이러한 크기 조정 값은 BTensor 값의 시한을 지정하는 데 사용됩니다.
메모
배율 값이 0이면 정의되지 않은 동작이 발생합니다.
BZeroPointTensor
형식: _Maybenull_ const DML_TENSOR_DESC*
BTensor 0포인트 데이터를 포함하는 선택적 텐서입니다.
BZeroPointTensor
예상 차원은 텐서 수량화당 필요한 경우 { 1, 1, 1, 1 }
열당 정량화가 필요한 경우 { 1, 1, 1, N }
. 이러한 0포인트 값은 BTensor 값의 시한을 지정하는 데 사용됩니다.
OutputScaleTensor
형식: const DML_TENSOR_DESC*
OutputTensor 크기 조정 데이터를 포함하는 텐서입니다.
OutputScaleTensor
예상 차원은 텐서당 양자화가 필요한 경우 { 1, 1, 1, 1 }
, 행별 양자화가 필요한 경우 { 1, 1, M, 1 }
. 이 크기 조정 값은 OutputTensor 값의 시한을 지정하는 데 사용됩니다.
메모
배율 값이 0이면 정의되지 않은 동작이 발생합니다.
OutputZeroPointTensor
형식: _Maybenull_ const DML_TENSOR_DESC*
OutputTensor 0포인트 데이터를 포함하는 선택적 텐서입니다.
OutputZeroPointTensor
예상 차원은 텐서당 양자화가 필요한 경우 { 1, 1, 1, 1 }
, 행별 양자화가 필요한 경우 { 1, 1, M, 1 }
. 이 0포인트 값은 OutputTensor 값의 시한을 지정하는 데 사용됩니다.
OutputTensor
형식: const DML_TENSOR_DESC*
결과를 쓸 텐서입니다. 이 텐서의 차원은 { BatchCount, ChannelCount, M, N }
.
가용도
이 연산자는 DML_FEATURE_LEVEL_2_1
도입되었습니다.
Tensor 제약 조건
- AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor및 OutputZeroPointTensor 동일한 DimensionCount있어야 합니다.
- ATensor, BTensor및 OutputTensor 동일한 DimensionCount있어야 합니다.
- BTensor 및 BZeroPointTensor 동일한 DataType있어야 합니다.
- OutputTensor 및 OutputZeroPointTensor 동일한 DataType있어야 합니다.
- AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor및 OutputZeroPointTensor 동일한 DimensionCount있어야 합니다.
- ATensor 및 AZeroPointTensor 동일한 DataType있어야 합니다.
Tensor 지원
DML_FEATURE_LEVEL_4_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
ATensor | 입력 | 2 ~4 | INT8, UINT8 |
AScaleTensor | 입력 | 1~4 | FLOAT32 |
AZeroPointTensor | 선택적 입력 | 1~4 | INT8, UINT8 |
BTensor | 입력 | 2 ~4 | INT8, UINT8 |
BScaleTensor | 입력 | 1~4 | FLOAT32 |
BZeroPointTensor | 선택적 입력 | 1~4 | INT8, UINT8 |
OutputScaleTensor | 입력 | 1~4 | FLOAT32 |
OutputZeroPointTensor | 선택적 입력 | 1~4 | INT8, UINT8 |
OutputTensor | 출력 | 2 ~4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
ATensor | 입력 | 4 | INT8, UINT8 |
AScaleTensor | 입력 | 4 | FLOAT32 |
AZeroPointTensor | 선택적 입력 | 4 | INT8, UINT8 |
BTensor | 입력 | 4 | INT8, UINT8 |
BScaleTensor | 입력 | 4 | FLOAT32 |
BZeroPointTensor | 선택적 입력 | 4 | INT8, UINT8 |
OutputScaleTensor | 입력 | 4 | FLOAT32 |
OutputZeroPointTensor | 선택적 입력 | 4 | INT8, UINT8 |
OutputTensor | 출력 | 4 | INT8, UINT8 |
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 빌드 20348 |
지원되는 최소 서버 | Windows 10 빌드 20348 |
헤더 | directml.h |