다음을 통해 공유


DML_ONE_HOT_OPERATOR_DESC 구조체(directml.h)

1 핫 인코딩 값 으로 채워진 텐서를 생성합니다. 이 연산자는 선택한 축의 모든 시퀀스에 대해 해당 시퀀스의 요소를 제외한 모든 요소가 OffValue로 설정되고 나머지 단일 요소가 OnValue로 설정된 출력 텐서를 생성합니다. 시퀀스는OutputTensorAxis 차원을 따라 존재하는 요소 집합 중 하나를 나타냅니다.

각 시퀀스의 OnValue 위치와 OnValue/OffValue 선택은 각각 IndicesTensorValuesTensor에 의해 결정됩니다.

구문

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은 항상 축의 모든 시퀀스에 대한 첫 번째 요소를 가리킵니다.

시퀀스의 인덱스 값이 OutputTensorAxis 차원을 따라 있는 요소 수를 초과하면 해당 인덱스 값이 무시되고 해당 시퀀스의 모든 요소가 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, OutputTensorValuesTensor 에는 동일한 DimensionCount가 있어야 합니다.
  • OutputTensorValuesTensor 에는 동일한 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