DML_ONE_HOT_OPERATOR_DESC 구조체(directml.h)
1 핫 인코딩 값 으로 채워진 텐서를 생성합니다. 이 연산자는 선택한 축의 모든 시퀀스에 대해 해당 시퀀스의 요소를 제외한 모든 요소가 OffValue로 설정되고 나머지 단일 요소가 OnValue로 설정된 출력 텐서를 생성합니다. 시퀀스는OutputTensor의 Axis 차원을 따라 존재하는 요소 집합 중 하나를 나타냅니다.
각 시퀀스의 OnValue 위치와 OnValue/OffValue 선택은 각각 IndicesTensor 및 ValuesTensor에 의해 결정됩니다.
구문
struct DML_ONE_HOT_OPERATOR_DESC {
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *ValuesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
멤버
IndicesTensor
형식: const DML_TENSOR_DESC*
축을 따라 각 시퀀스에 대한 OnValue 요소의 인덱스를 포함하는 텐서입니다. 인덱스는 시퀀스의 시작 부분을 기준으로 측정됩니다(텐서의 시작과 반대). 예를 들어 인덱스 0은 항상 축의 모든 시퀀스에 대한 첫 번째 요소를 가리킵니다.
시퀀스의 인덱스 값이 OutputTensor의 Axis 차원을 따라 있는 요소 수를 초과하면 해당 인덱스 값이 무시되고 해당 시퀀스의 모든 요소가 OffValue로 설정됩니다.
부터 이 연산자는 이 텐서와 DML_FEATURE_LEVEL_3_0
함께 서명된 정수 형식을 사용할 때 음수 인덱스 값을 지원합니다. 음수 인덱스는 시퀀스의 끝에 상대적인 것으로 해석됩니다. 예를 들어 -1의 인덱스는 시퀀스의 마지막 요소를 나타냅니다.
이 텐서는 Axis 매개 변수로 지정된 차원을 제외하고 차원 개수 및 크기가 OutputTensor와 같아야 합니다. 축 차원의 크기는 1이어야 합니다. 예를 들어 OutputTensor 의 {2,3,4,5}
크기가 이고 Axis 가 1인 경우 IndicesTensor 의 크기는 이어야 {2,1,4,5}
합니다.
ValuesTensor
형식: const DML_TENSOR_DESC*
이 텐서에는 두 개 이상의 요소가 포함되어 있는 한 크기가 있을 수 있습니다. 이 텐서의 0번째 요소는 OffValue로 해석되고 크기 1의 >가장 빠르게 변화하는 차원을 따라 1번째 요소는 OnValue로 해석됩니다.
OutputTensor
형식: const DML_TENSOR_DESC*
결과를 쓸 출력 텐서입니다. 이 텐서는 Axis 매개 변수에 지정된 차원을 제외하고 차원 수와 크기가 IndicesTensor와 같아야 합니다. 이 텐서의 Axis 차원 크기는 0보다 큰 값을 가질 수 있습니다.
Axis
형식: UINT
원 핫 인코딩 시퀀스를 생성할 차원의 인덱스입니다. 이 값은 IndicesTensor의 DimensionCount보다 작아야 합니다.
예제
예 1
IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
[3],
[2]]]]
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]
Axis: 3
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 0], // The one-hot encoding is formed across the rows
[0, 0, 0, 1],
[0, 0, 1, 0]]]]
예제 2. 다른 축 사용
IndicesTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[0, 2, 1, 0]]]]
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]
Axis: 2
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 1], // The one-hot encoding is formed across the columns
[0, 0, 1, 0],
[0, 1, 0, 0]]]]
예제 3. 다른 켜기/끄기 값 사용
IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
[3],
[2]]]]
ValuesTensor: (Sizes:{1,1,3,1}, DataType:FLOAT32)
[[[[4], // off value
[2], // on value
[9]]]] // unused
Axis: 3
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 4, 4, 4],
[4, 4, 4, 2],
[4, 4, 2, 4]]]]
예제 4. 음수 및 범위를 벗어난 인덱스
IndicesTensor: (Sizes:{1,1,3,1}, DataType:INT32)
[[[[ -3],
[100],
[ 3]]]]
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]
Axis: 3
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 1, 0, 0], // negative indices count from the end
[0, 0, 0, 0], // out-of-bounds indices are ignored; all elements are set to OffValue
[0, 0, 0, 1]]]]
설명
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_2_0
도입되었습니다.
텐서 제약 조건
- IndicesTensor, OutputTensor 및 ValuesTensor 에는 동일한 DimensionCount가 있어야 합니다.
- OutputTensor 및 ValuesTensor 에는 동일한 DataType이 있어야 합니다.
텐서 지원
DML_FEATURE_LEVEL_4_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
IndicesTensor | 입력 | 1~8개 | INT64, INT32, UINT64, UINT32 |
ValuesTensor | 입력 | 1~8개 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 1~8개 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
IndicesTensor | 입력 | 1~8개 | INT64, INT32, UINT64, UINT32 |
ValuesTensor | 입력 | 1~8개 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 1~8개 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
IndicesTensor | 입력 | 4 | Uint32 |
ValuesTensor | 입력 | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_0 이상
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
IndicesTensor | 입력 | 4 | Uint32 |
ValuesTensor | 입력 | 4 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16 |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 버전 2004(10.0; 빌드 19041) |
지원되는 최소 서버 | Windows Server 버전 2004(10.0; 빌드 19041) |
머리글 | directml.h |