반응형
다항 선형 회귀 (Multivariable Linear Regression)
ex) 3개의 퀴즈성적(x)과 파이널 시험(y)성적을 예측해보자
H(x) = w1x1 + w2x2 + w3x3 + b
| quiz1 | quiz2 | quiz3 | final(y) |
|:----------:|:----------:|:----------:||:----------:|
| 73 | 80 | 75 | 152 |
| 93 | 88 | 93 | 185 |
| 89 | 91 | 80 | 180 |
| 96 | 98 | 100| 196 |
| 73 | 66 | 70 | 142 |
nn.Module
- 인공신경망을 편하게 만들 수 있음
- nn.Linear(3,1)
- 입력차원:3
- 출력차원:1
- forward( )에서 hypothesis를 어떻게 계산할 것 인지 지정
import torch.nn as nn
class MultivariateLinearRegressionModel(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(3, 1)
def forward(self, x):
return self.linear(x)
F.mse_losss
torch.mean((hypothesis - y_train)\**2)
# 대신에 아래를 사용
import torch.nn.functional as F
cost = F.mse_loss(prediction,y_train)
결과 코드
import torch
import torch.nn as nn
import torch.nn.functional as F
class MultivariateLinearRegressionModel(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(3, 1)
def forward(self, x):
return self.linear(x)
# 데이터
x_train = torch.FloatTensor([[73, 80, 75],
[93, 88, 93],
[89, 91, 90],
[96, 98, 100],
[73, 66, 70]])
y_train = torch.FloatTensor([[152], [185], [180], [196], [142]])
# 모델 초기화
model = MultivariateLinearRegressionModel()
# optimizer 설정
optimizer = torch.optim.SGD(model.parameters(), lr=1e-5)
nb_epochs = 20
for epoch in range(nb_epochs+1):
# 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('Epoch {:4d}/{} Cost: {:.6f}'.format(
epoch, nb_epochs, cost.item()
))
반응형
'부스트캠프 AI Tech 2기 > Precourse' 카테고리의 다른 글
Logistic Regression (0) | 2021.08.01 |
---|---|
Minibatch Gradient Descent (0) | 2021.08.01 |
Gradient Descent 심화 (0) | 2021.08.01 |
Linear Regression (0) | 2021.07.29 |
Tensor Manipulation 2 (0) | 2021.07.29 |