#!/usr/bin/env python # coding: utf-8 # In[1]: import torch import numpy as np import matplotlib.pyplot as plt # In[2]: torch.__version__ # In[3]: get_ipython().run_line_magic('matplotlib', 'inline') # In[4]: study = [1,2,3] grade = [2,4,6] # In[5]: study = torch.tensor(study, dtype=torch.float) grade = torch.tensor(grade, dtype = torch.float) # In[6]: w = torch.tensor([np.random.rand()], requires_grad=True, dtype=torch.float) w # In[7]: def forward(x): return x *w # In[8]: def loss(x,y): y_pred = forward(x) return (y_pred - y)**2 # In[9]: forward(2) # In[10]: epoch_list = [] loss_list = [] # In[11]: 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) # In[12]: plt.plot(epoch_list, loss_list)