파이토치로 시작하는 딥러닝 기초 (부스트코스) - Lab-03 Deeper Look at GD
이해를 쉽게 하기 위해, b를 0으로 두고
x = 1일 때 y = 1
x = 2일 때 y = 2
x = 3일 때 y = 3인 모델을 찾고 싶다고 한다면


W=1에서 cost가 최소가 될 것임. 이 기울기를 Gradient라 부름.

Gradient Descent: Gradient를 이용해서 cost를 줄임.
gradient = 2 * torch.mean((W * x_train - y_train ) * x_train)
lr = 0.1
W -= lr * gradient
전체 코드
import torch
from torch import optim
x_train = torch.FloatTensor([1], [2], [3])
y_train = torch.FloatTensor([2], [4], [6])
W = torch.zeros(1)
lr = 9.1
nb_epochs = 10
for epoch in range(1, nb_epochs + 1):
hypothesis = x_train * W
cost = torch.mean((hypothesis - y_train) ** 2)
gradient = torch.sum((W * x_train - y_train) * x_train)
print('Epoch {:4d}/{} W: {:.3f}, Cost: {:.6f}'.format(
epoch, nb_epochs, W.item(), cost.item()
))
W -= lr * gradient
PyTorch에서는 torch.optim으로 gradient descent를 쉽게 할 수 있도록 함