AI

[pytorch] 선형 회귀 (Linear Regression) 예제 코드

pullwall 2024. 11. 19. 15:29
728x90
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.init as init

num_data = 1000
num_epoch = 500

x = init.uniform(torch.Tensor(num_data, 1), -10, 10)
noise = init.normal(torch.Tensor(num_data, 1), std=1)

y = 2*x+3
y_noise = 2*(x+noise)+3

model = nn.Linear(1,1)
# Loss함수로 L1 Loss
loss_func = nn.L1Loss()

# Optimizer로 Stochastic Gradient Descent
optimizer = optim.SGD(model.parameters(), lr=0.01)

label = y_noise


# model 학습
for i in range(num_epoch):
  # gradient를 누적하지 않도록 zero_grad 를 통해 매번 0으로 초기화
  optimizer.zero_grad()
  output = model(x)

  loss = loss_func(output, label)
  # gradient 계산
  loss.backward()
  # 파라미터 업데이트
  optimizer.step()

  if i%10 == 0:
    print(loss.data)


# 학습을 통해 결정된 weight와 bias 출력
param_list = list(model.parameters())
print(param_list[0].item(), param_list[1].item())
728x90