반응형
Minibatch Gradient Descent
- 복잡한 머신러닝 모델을 학습하려면 엄청난 양의 데이터가 필요
- 대부분 데이터셋은 적어도 수십만개의 데이터를 제공
- 많은 양의 데이터를 한번에 학습시킬 수 없음
- 너무 느리거나 하드웨어적으로 불가능
- 일부분의 데이터만 갖고 학습하면됨!
(이미지 출처: boostcourse ai tech pre course)
- 한번의 업데이트마다 계산할 코스트의 양은 줄어들고 업데이트의 주기가 빨라짐
- 모델이 코스트를 계산할 때 전체데이터를 쓰지 않기 때문에 모델이 가끔 잘못된 방향으로 학습할 수 있기 때문에 거칠게 줄어든다
(이미지 출처: boostcourse ai tech pre course)
Pytorch Dataset
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
class CustomDataset(Dataset):
def __init__(self):
self.x_data = torch.FloatTensor([[73, 80, 75],
[93, 88, 93],
[89, 91, 90],
[96, 98, 100],
[73, 66, 70]])
self.y_data = torch.FloatTensor([[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
dataloader = DataLoader(
dataset,
# 배치사이즈는 통상적으로 의 제곱수로 설정함 (2,4,8,16,32 ...)
batch_size=2,
# epoch마다 불러오는 데이터의 순서를 바꿈
shuffle=True
)
model = nn.Linear(3,1)
optimizer = torch.optim.SGD(model.parameters(), lr=1e-5)
dataset = CustomDataset()
nb_epochs = 20
for epoch in range(nb_epochs+1):
for batch_idx, samples in enumerate(dataloader):
x_train, y_train = samples
print(y_train)
#H(x) 계산
prediction = model(x_train)
#cost 계산
cost = F.mse_loss(prediction,y_train)
# cost로 H(x)개선
optimizer.zero_grad()
cost.backward()
optimizer.step()
print(f'Epoch {epoch} Batch {batch_idx} Cost {cost} len(dataloader) {len(dataloader)}')
->
Epoch 0 Batch 0 Cost 3.291550636291504 len(dataloader) 3
Epoch 0 Batch 1 Cost 1.118896484375 len(dataloader) 3
Epoch 0 Batch 2 Cost 3.8115389347076416 len(dataloader) 3
Epoch 1 Batch 0 Cost 2.5442991256713867 len(dataloader) 3
Epoch 1 Batch 1 Cost 3.314734935760498 len(dataloader) 3
Epoch 1 Batch 2 Cost 2.07246470451355 len(dataloader) 3
Epoch 2 Batch 0 Cost 1.6764813661575317 len(dataloader) 3
Epoch 2 Batch 1 Cost 5.632094383239746 len(dataloader) 3
Epoch 2 Batch 2 Cost 0.7754025459289551 len(dataloader) 3
Epoch 3 Batch 0 Cost 0.49777066707611084 len(dataloader) 3
Epoch 3 Batch 1 Cost 6.141338348388672 len(dataloader) 3
Epoch 3 Batch 2 Cost 1.8593679666519165 len(dataloader) 3
Epoch 4 Batch 0 Cost 1.914170265197754 len(dataloader) 3
Epoch 4 Batch 1 Cost 0.7164154648780823 len(dataloader) 3
Epoch 4 Batch 2 Cost 6.807404518127441 len(dataloader) 3
Epoch 5 Batch 0 Cost 1.964393138885498 len(dataloader) 3
Epoch 5 Batch 1 Cost 3.288635730743408 len(dataloader) 3
Epoch 5 Batch 2 Cost 1.998105764389038 len(dataloader) 3
Epoch 6 Batch 0 Cost 1.3481409549713135 len(dataloader) 3
Epoch 6 Batch 1 Cost 2.8444905281066895 len(dataloader) 3
Epoch 6 Batch 2 Cost 3.2041306495666504 len(dataloader) 3
Epoch 7 Batch 0 Cost 3.3811402320861816 len(dataloader) 3
Epoch 7 Batch 1 Cost 1.1414833068847656 len(dataloader) 3
Epoch 7 Batch 2 Cost 4.106905937194824 len(dataloader) 3
Epoch 8 Batch 0 Cost 2.1265885829925537 len(dataloader) 3
Epoch 8 Batch 1 Cost 3.239224910736084 len(dataloader) 3
Epoch 8 Batch 2 Cost 2.03515887260437 len(dataloader) 3
Epoch 9 Batch 0 Cost 1.6557236909866333 len(dataloader) 3
Epoch 9 Batch 1 Cost 5.594474792480469 len(dataloader) 3
Epoch 9 Batch 2 Cost 0.7550076246261597 len(dataloader) 3
Epoch 10 Batch 0 Cost 1.943891167640686 len(dataloader) 3
Epoch 10 Batch 1 Cost 3.0830180644989014 len(dataloader) 3
Epoch 10 Batch 2 Cost 0.897051990032196 len(dataloader) 3
Epoch 11 Batch 0 Cost 0.5825195908546448 len(dataloader) 3
Epoch 11 Batch 1 Cost 5.921527862548828 len(dataloader) 3
Epoch 11 Batch 2 Cost 1.9018453359603882 len(dataloader) 3
Epoch 12 Batch 0 Cost 3.3894286155700684 len(dataloader) 3
Epoch 12 Batch 1 Cost 1.4494136571884155 len(dataloader) 3
Epoch 12 Batch 2 Cost 1.2983812093734741 len(dataloader) 3
Epoch 13 Batch 0 Cost 3.3638601303100586 len(dataloader) 3
Epoch 13 Batch 1 Cost 1.546014666557312 len(dataloader) 3
Epoch 13 Batch 2 Cost 1.6846563816070557 len(dataloader) 3
Epoch 14 Batch 0 Cost 0.21428610384464264 len(dataloader) 3
Epoch 14 Batch 1 Cost 6.621321201324463 len(dataloader) 3
Epoch 14 Batch 2 Cost 1.6317239999771118 len(dataloader) 3
Epoch 15 Batch 0 Cost 0.3773481845855713 len(dataloader) 3
Epoch 15 Batch 1 Cost 2.258207082748413 len(dataloader) 3
Epoch 15 Batch 2 Cost 5.821216583251953 len(dataloader) 3
Epoch 16 Batch 0 Cost 2.3676156997680664 len(dataloader) 3
Epoch 16 Batch 1 Cost 3.1928327083587646 len(dataloader) 3
Epoch 16 Batch 2 Cost 1.8163007497787476 len(dataloader) 3
Epoch 17 Batch 0 Cost 1.3270859718322754 len(dataloader) 3
Epoch 17 Batch 1 Cost 3.2533035278320312 len(dataloader) 3
Epoch 17 Batch 2 Cost 2.075585126876831 len(dataloader) 3
Epoch 18 Batch 0 Cost 0.47650521993637085 len(dataloader) 3
Epoch 18 Batch 1 Cost 2.1760542392730713 len(dataloader) 3
Epoch 18 Batch 2 Cost 5.713555812835693 len(dataloader) 3
Epoch 19 Batch 0 Cost 2.826439380645752 len(dataloader) 3
Epoch 19 Batch 1 Cost 2.588228702545166 len(dataloader) 3
Epoch 19 Batch 2 Cost 2.576158285140991 len(dataloader) 3
Epoch 20 Batch 0 Cost 2.0647971630096436 len(dataloader) 3
Epoch 20 Batch 1 Cost 1.4903874397277832 len(dataloader) 3
Epoch 20 Batch 2 Cost 5.710638523101807 len(dataloader) 3
반응형
'부스트캠프 AI Tech 2기 > Precourse' 카테고리의 다른 글
Softmax Classification (0) | 2021.08.01 |
---|---|
Logistic Regression (0) | 2021.08.01 |
Multivariate Linear Regression (0) | 2021.08.01 |
Gradient Descent 심화 (0) | 2021.08.01 |
Linear Regression (0) | 2021.07.29 |