본문 바로가기
모두의 딥러닝/강의자료 정리

Lab_02: Linear regression

by cvlab_김준수 2025. 1. 6.

아래와 같은 선형 회귀의 가중치와 바이어스를 학습시키기 위한 코드를 작성해보자. 

 

 

 

그전에, MSE를 손실함수로 사용해서, 실제 값과 예측값의 오차를 찾아내서 그 값을 기준으로 매개변수를 학습시킨다는 점을 인지하자.

 

 

전체 코드

import torch
import torch.optim as optim


# 데이터 초기화
x_train = torch.FloatTensor([[1],[2],[3]])
y_train = torch.FloatTensor([[2],[4],[6]])


# 학습 파라미터 초기화
W = torch.zeros(1, requires_grad=True) # W를 학습시키겠다.
b = torch.zeros(1, requires_grad=True) # b를 학습시키겠다.

hypothesis = x_train * W + b # y = Wx + b


# 옵티마이저 설(확률적 경사 하강법 사용하여 학습)
optimizer = optim.SGD([W,b], lr=0.01)       


# 에포크 설정
nb_epochs = 1000   


for epoch in range(1, nb_epochs + 1):
    hypothesis = x_train * W + b

    cost = torch.mean((hypothesis - y_train)**2) # 손실 함수 (평균 제곱 오차)

    optimizer.zero_grad() # 경사 초기화

    cost.backward() # 손실(cost)을 기준으로 기울기 계산 (역전파)

    optimizer.step() # 가중치와 편향 업데이트

    # 100번마다 로그 출력
    if epoch % 100 == 0:
        print(f"Epoch {epoch}/{nb_epochs}, Cost: {cost.item()}, W: {W.item()}, b: {b.item()}")