-
소프트맥스 회귀(Softmax Regression)부스트캠프 Ai tech/3주차 2022. 1. 31. 12:20
소프트맥스 회귀(Softmax Regression)
3개 이상의 선택지로부터 1개를 선택하는 문제인 다중 클래스 분류를 풀기 위해 사용, 원-핫 인코딩과 함께
import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim x_train = [[1, 2, 1, 1], [2, 1, 3, 2], [3, 1, 3, 4], [4, 1, 5, 5], [1, 7, 5, 5], [1, 2, 5, 6], [1, 6, 6, 6], [1, 7, 7, 7]] y_train = [2, 2, 2, 1, 1, 1, 0, 0] x_train = torch.FloatTensor(x_train) y_train = torch.LongTensor(y_train) model = nn.Linear(4,3) # optimizer 설정 optimizer = optim.SGD(model.parameters(), lr=0.1) nb_epochs = 1000 for epoch in range(nb_epochs + 1): # H(x) 계산 prediction = model(x_train) # cost 계산 cost = F.cross_entropy(prediction, y_train) # cost로 H(x) 개선 optimizer.zero_grad() cost.backward() optimizer.step() if epoch % 100 == 0: print('Epoch {:4d}/{} Cost: {:.6f}'.format( epoch, nb_epochs, cost.item() ))
위 코드를 보면 y_train을 원-핫 인코딩을 해야 한다. 근데 이걸 원-핫 인코딩으로 바꿔주고 오차까지 계산해주는 함수가 cross_entropy함수이다. 8X3인 prediction과 1X8인 y_train을 계산해주는 멋진 함수다.
'부스트캠프 Ai tech > 3주차' 카테고리의 다른 글
12일 - 색상, (0) 2022.02.04 11일 - 데이터 시각화 (0) 2022.02.03