Pytorch로 시작하는 딥러닝 입문(03-04 nn.Module로 구현하는 선형 회귀: 다중선형회귀)

2024. 2. 14. 23:05딥러닝 모델: 파이토치

단순선형회귀와 비교했을 때 nn.Linear( ) 의 인자값과 학습률만 조절하였다 

 

♣ 다중선형회귀 구현하기 

1. 기본 기능 import 하기

 

2. 데이터 선언하기 

다중선형회귀이기 때문에 3개의 x로부터 하나의 y를 예측한다. 즉 가설 수식은 아래와 같다. 

 

 

 

 

3. 선형회귀모델 구현하기

 

3개의 입력 x에 대해서 하나의 출력 y를 가지므로 입력 차원은 3, 출력 차원은 1을 인수로 사용하였다. 

model에는 3개의 가중치 W와 편향 b가 저장되어 있다. model.parameters( ) 함수를 이용하여 가중치와 편향을 확인한다. 

 

첫 번째 출력되는 것이 3개의 W이고, 두 번째 출력되는 것이 b에 해당한다. 두 값 모두 랜덤 초기화되어 있다. 

또한 단순선형회귀에서와 마찬가지로 두 가지 모두 학습 대상이므로 requires_grad = True가 설정되어 있다. 

 

 

4. 옵티마이저 정의하기 

학습률을 0.00001로 정했는데, 0.01로 하면 기울기가 발산하기 때문이다. 학습률이 모델의 필요한 크기보다 높으면 기울기가 발산한다. model을 사용하지 않고 w와 b를 직접 정의했을 때는 optimizer = torch.optim.SGD([W, b], lr=1e-5)로 넣었다. 

 

 

 

5. 훈련하기 

 

 

6. 최적화 확인하기 

x에 임의의 입력 [73, 80, 75]를 넣어 모델이 예측하는 y의 값을 확인한다. 

 

3개의 값이 훈련데이터로 사용되었던 당시 y값은 152였다. 현재 예측값과 비교하면 어느 정도 W와 b가 최적화된 것으로 보인다.