[파이토치로 시작하는 딥러닝 기초]04.02_Loading Data

2020. 12. 21. 17:24·AI Study/DL_Basic
반응형

Loading Data

  • Minibatch Gradient Descent 이론
  • Pytorch Dataset and Data Loader 사용법

Data in the Real World

  • 복잡한 머신러닝 모델을 학습하려면 엄청난 양의 데이터가 필요하다

  • 대부분 데이터셋은 적어도 수십만개의 데이터를 제공한다.

  • 엄청난 양의 데이터를 한번에 학습시킬 수 없다. 이유는?

    • 너무 느리고
    • 하드웨어적으로 불가능하기 때문
  • 그렇다면 일부분의 데이터로만 학습하면 어떨까?

Minibatch Gradient Descent

  • 전체 데이터를 작은 Minibatch라는 작은 양으로 균일하게 나누어서 minibatch 하나씩 학습하는 방법
  • 그러면 컴퓨터가 dataset의 모든 데이터의 cost를 다 계산한 후 gradient descent를 하지 않고 각 minibatch에 있는 데이터의 cost만 계산한 후에 gradient decent를 할 수 있다. -> 컴퓨터에 무리를 덜 준다.

minibatch Gradient Descent : effects

  • 업데이트를 좀 더 빠르게 할 수 있다.
  • 전체 데이터를 쓰지 않아서 잘못된 방향으로 업데이트를 할 수도 있다.

 

Pytorch Dataset

  • torch.utils.data.Dataset 상속

  • __len__() : 해당 데이터 셋의 총 데이터 수

  • __getitem__() : 어떤 인덱스(idx)를 받았을 때, 그에 상응하는 입출력 데이터 변환

from torch.utils.data import Dataset

class CustomDataset(Dataset):
    def __init__(self):
        self.x_data = [[73, 80, 75],
                       [93, 88, 93],
                       [89, 91, 90],
                       [96, 98, 100],
                       [73, 66, 70]]
        self.y_data = [[152], [185], [180], [196], [142]]
        
    def __len__(self):
        return len(self.x_data)
    
    def __getitem__(self, idx):
        x = torch.FloatTensor(self.x_data[idx])
        y = torch.FloatTensor(self.y_data[idx])
        
        return x, y
    
dataset = CustomDataset()

Pytorch DataLoader

  • torch.utils.data.DataLoader 사용

  • batch_size

    • 각 minibatch의 크기
    • 통상적으로 2의 제곱수로 결정한다.
  • shuffle = True

    • epoch마다 데이터 셋을 섞어서 데이터가 학습되는 순서를 바꾼다.
from torch.utils.data import DataLoader

dataloader = DataLoader(
    dataset, 
    batch_size = 2,  ## minibatch의 크기
    shuffle = True  ## 데이터 셋을 섞어서 데이터 순서를 기억하지 못하게 함
)
nb_epochs = 20
plot_list = []
for epoch in range(nb_epochs + 1): 
    for batch_idx, samples in enumerate(dataloader):
        x_train, y_train = samples
        
        # H(x) 계산
        hypothesis = model(x_train)
    
        # cost 계산
        cost = F.mse_loss(hypothesis, y_train)
    
        # cost로 H(x) 계산
        optimizer.zero_grad()
        cost.backward()
        optimizer.step()

        print('Epoch {:4d}/{} Batch {}/{} Cost : {:.6f}'.format(
            epoch, nb_epochs, batch_idx+1 ,len(dataloader), cost.item()
        ))
        plot_list.append(cost.item())
        
>>>>
Epoch    0/20 Batch 1/3 Cost : 1.294328
Epoch    0/20 Batch 2/3 Cost : 2.731413
Epoch    0/20 Batch 3/3 Cost : 2.611053
Epoch    1/20 Batch 1/3 Cost : 2.285962
Epoch    1/20 Batch 2/3 Cost : 1.871582
Epoch    1/20 Batch 3/3 Cost : 4.009527
Epoch    2/20 Batch 1/3 Cost : 2.522751

...

Epoch   19/20 Batch 3/3 Cost : 2.682846
Epoch   20/20 Batch 1/3 Cost : 0.613732
Epoch   20/20 Batch 2/3 Cost : 2.287714
Epoch   20/20 Batch 3/3 Cost : 4.782553

출처 : www.boostcourse.org/ai214/lecture/42288

 

파이토치로 시작하는 딥러닝 기초

부스트코스 무료 강의

www.boostcourse.org

 

반응형

'AI Study > DL_Basic' 카테고리의 다른 글

[파이토치로 시작하는 딥러닝 기초]06_Softmax Classification  (0) 2020.12.28
[파이토치로 시작하는 딥러닝 기초]05_ Logistic Regression  (0) 2020.12.22
[파이토치로 시작하는 딥러닝 기초]04.01_Multivariable_Linear_regression  (0) 2020.12.21
[파이토치로 시작하는 딥러닝 기초]03_Deeper Look at Gradient Descent  (0) 2020.12.21
[파이토치로 시작하는 딥러닝 기초]02_Linear Regression  (0) 2020.12.21
'AI Study/DL_Basic' 카테고리의 다른 글
  • [파이토치로 시작하는 딥러닝 기초]06_Softmax Classification
  • [파이토치로 시작하는 딥러닝 기초]05_ Logistic Regression
  • [파이토치로 시작하는 딥러닝 기초]04.01_Multivariable_Linear_regression
  • [파이토치로 시작하는 딥러닝 기초]03_Deeper Look at Gradient Descent
자동화먹
자동화먹
많은 사람들에게 도움이 되는 생산적인 기록하기
    반응형
  • 자동화먹
    자동화먹의 생산적인 기록
    자동화먹
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 생산성 & 자동화 툴 (30)
        • Notion (24)
        • Obsidian (0)
        • Make.com (1)
        • tips (5)
      • Programming (37)
        • Python (18)
        • Oracle (6)
        • Git (13)
      • AI Study (65)
        • DL_Basic (14)
        • ML_Basic (14)
        • NLP (21)
        • Marketing&Recommend (4)
        • chatGPT (0)
        • etc (12)
      • 주인장의 생각서랍 (10)
        • 생각정리 (4)
        • 독서기록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pytorch
    gcp
    Transformer
    파이토치로 시작하는 딥러닝 기초
    ML
    머신러닝
    Google Cloud Platform
    git commit
    노션
    git
    LSTM
    파이토치
    dl
    자연어처리
    빅데이터
    python기초
    seq2seq
    빅데이터분석
    Python
    nlp
    Jupyter notebook
    데이터분석
    기초
    딥러닝
    데이터베이스
    notion
    GPT
    cnn
    Github
    노션첫걸음
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
자동화먹
[파이토치로 시작하는 딥러닝 기초]04.02_Loading Data
상단으로

티스토리툴바