import torch
import numpy as np
import matplotlib.pyplot as plt
torch.__version__
'0.4.0'
%matplotlib inline
study = [1,2,3]
grade = [2,4,6]
study = torch.tensor(study, dtype=torch.float)
grade = torch.tensor(grade, dtype = torch.float)
w = torch.tensor([np.random.rand()], requires_grad=True, dtype=torch.float)
w
tensor([ 0.9836])
def forward(x):
return x *w
def loss(x,y):
y_pred = forward(x)
return (y_pred - y)**2
forward(2)
tensor([ 1.9671])
epoch_list = []
loss_list = []
epoch = 30
lr = 0.01
for i in range(epoch):
l = 0
for x,y in zip(study,grade):
y_pred = forward(x)
loss_val = loss(x,y)
loss_val.backward()
with torch.no_grad():
w -= lr * w.grad
w.grad.zero_()
l += loss_val.item()
epoch_list.append(i)
loss_list.append(l/3)
plt.plot(epoch_list, loss_list)
[<matplotlib.lines.Line2D at 0x11ac10710>]