아래와 같은 선형 회귀의 가중치와 바이어스를 학습시키기 위한 코드를 작성해보자.
그전에, 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()}")
'모두의 딥러닝 > 강의자료 정리' 카테고리의 다른 글
Lab_05: Logistic Regression (1) | 2025.01.16 |
---|---|
Lab_04-2: Loading Data(mini batch) (0) | 2025.01.15 |
Lab_04-1: Multivariable Linear regression (0) | 2025.01.15 |
Lab_03: Deeper Look at Gradient Descent (1) | 2025.01.15 |
Lab_01: Tensor Manipulation (1) | 2025.01.05 |