반응형
원-핫 이란?
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]])
반응형
댓글