ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소프트맥스 회귀(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

    댓글

Designed by Tistory.