반응형
예제
공부시간에 따른 점수데이터가 아래와 같이 존재할 때 4시간 공부했을 경우 점수를 예측해보자
시간 | 점수 |
---|---|
1 | 2 |
2 | 4 |
3 | 6 |
4 | ??? |
Hypothesis(가설)
y = Wx + b
x_train = torch.FloatTensor([[1],[2],[3]])
y_train = torch.FloatTensor([[4],[5],[6]])
W = torch.zeros(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)
hypothesis = x_train * W + b
- weight와 bias를 0으로 초기화
- 항상 출력 0을 예측
- requires_grad = True
- 학습할 것이라고 명시
Compute Loss
MSE를 사용
(이미지출처: boostcourse ai tech precourse)
파이토치 구현
cost = torch.mean((hypothesis - y_train) **2)
Gradient descent
optimizer = torch.optim.SGD([W,b], lr=0.01)
optimizer.zero_grad()
-> gradient 초기화
cost.backward()
-> backward()로 gradient 계산
optimizer.step()
-> step()으로 개선
Full code
# 데이터 정의, Hypothesis 초기화, Optimizer 정의
x_train = torch.FloatTensor([[1],[2],[3]])
y_train = torch.FloatTensor([[4],[5],[6]])
W = torch.zeros(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)
optimizer = torch.optim.SGD([W,b], lr=0.01)
# Hypothesis 예측, Cost 계산, Optimizer로 학습 반복
epochs = 1000
for epoch in range(epochs):
hypothesis = x_train * W + b
cost = torch.mean((hypothesis - y_train) **2)
optimizer.zero_grad()
cost.backward()
optimizer.step()
print(4 * W + b)
-> tensor([7.1468], grad_fn=<AddBackward0>)
반응형
'부스트캠프 AI Tech 2기 > Precourse' 카테고리의 다른 글
Multivariate Linear Regression (0) | 2021.08.01 |
---|---|
Gradient Descent 심화 (0) | 2021.08.01 |
Tensor Manipulation 2 (0) | 2021.07.29 |
Tensor Manipulation 1 (0) | 2021.07.28 |
파이썬 시각화 툴 (4) | 2021.07.27 |