Pytorch_Linear_regression_기본정리

Pytorch Linear regression 기본 정리

모두를 위한 딥러닝 - 파이토치 강의 참고

  • 하나의 x값을 통해 하나의 y를 예측하는 간단한 모델을 만들어보자.

  • 다음과 같이 세개의 데이터를 만들고 이를 통해 간단한 선형 예측 모델을 학습시켜본다.

1
2
x_train = torch.FloatTensor([[1], [2], [3]])
y_train = torch.FloatTensor([[2], [4], [6]])
  • 선형 모델에서 x값이 주어졌을 때 y값(hypothesis-H(x))을 계산하기 위해서는 다음과 같은 식을 따르게 된다.
1
H(x) = W * x + b
  • 가지고 있는 데이터를 위 식을 통해 학습시키고자 한다면 우리가 알아야 하는 값 즉, 학습해야 하는 값은 W 와 b이다.

  • “requires_grad=True” 를 설정하여 다음과 같이 0으로 초기화된 W 와 b 를 만들 수 있다.

1
2
w = torch.zeros(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)
  • 우리가 만든 모델을 평가하기 위해서는 Mean Squared Error(MSE) 를 사용할 것입니다.

  • MSE는 예측값과 실제값의 차이를 제곱한 후 평균을 구한 값으로 다음과 같이 나타낼 수 있습니다.

1
loss = torch.mean((hypothesis - y_train) ** 2)
  • loss 를 구했다면 이를 통해 학습해야 하는 W 와 b 값을 개선해야 합니다.

  • 이를 위해 Stochastic gradient descent(SGD)를 사용할 것입니다.

  • optim 라이브러리의 SGD에 학습할 tensor를 리스트 형태로 넣어주고 learing rate를 지정해 다음과 같이 나타낼 수 있습니다.

1
optimizer = torch.optim.SGD([w, b], lr=0.01)
  • optimizer를 정의했다면 아래와 같은 순서를 통해 W와 b를 개선해준다.
1
2
3
optimizer.zero_grad()  # gradient 초기화
loss.backward() # gradient 계산
optimizer.step() # W 와 b 개선
  • 이러한 학습 방법을 따라 모델을 100회 한 후 x가 4일때의 y값을 살펴보면 8에 근접하는 값이 나오는 것을 확인할 수 있다.
1
2
3
x_test = torch.FloatTensor([[4]])
print(x_test * w + b)
#>>> tensor([[7.5598]], grad_fn=<AddBackward0>)

Full Code

Full Code

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×