본문 바로가기
파이토치/원-핫 인코딩

[파이토치] 원-핫 인코딩 하는 법 (one-hot encoding)

by bigpicture 2023. 10. 29.
반응형

원-핫 이란?

0과 1로만 이루어진 어떤 집합이 있을 때 하나의 원소만 1이고 나머지는 0인 경우를 원-핫 이라고 합니다. 

 

원-핫 인코딩이란?

어떤 데이터를 원-핫 데이터로 만드는 것을 원-핫 인코딩이라고 부릅니다. 

 

0,1,2,3,4 라는 다섯개의 레이블로 분류된 어떤 데이터가 있다고 합시다. 이때 레이블을 원-핫으로 바꾸는 것을 원-핫 인코딩이라고 합니다. 0,1,2,3,4 를 아래와 같이 바꾸는 것입니다. 

 

0 -> [1,0,0,0,0]

1 -> [0,1,0,0,0]

2 -> [0,0,1,0,0]

3 -> [0,0,0,1,0]

4 -> [0,0,0,0,1]

 

파이토치에서 원-핫 인코딩 하는 법

아래 코드와 주석으로 설명하겠습니다. 

#파이토치를 불러옵니다
import torch

#어떤 데이터의 레이블이 아래와 같다고 합시다. 
#각 레이블은 입력데이터 하나와 매치되어 있을 것입니다. 
label=torch.tensor([0,4,1,3,2])

#원핫 코딩을 하기 위해 torch 라이브러리 안에 있는 functional 을 불러옵니다. 
import torch.nn.functional as F 

#원핫 인코딩은 아래와 같이 수행합니다. 
label_oh=F.one_hot(label,num_classes=5)

#아래는 원핫 인코딩 결과입니다.
>>> label_oh
tensor([[1, 0, 0, 0, 0],
        [0, 0, 0, 0, 1],
        [0, 1, 0, 0, 0],
        [0, 0, 0, 1, 0],
        [0, 0, 1, 0, 0]])
반응형

댓글