import numpy as np
import torch
import matplotlib.pyplot as plt
%matplotlib inline
x_data = torch.tensor([[1],[2],[3]], dtype=torch.float)
y_data = torch.tensor([[2],[4],[6]], dtype = torch.float)
class LinearRegression(torch.nn.Module):
def __init__(self):
super(LinearRegression,self).__init__()
self.linear = torch.nn.Linear(1,1)
def forward(self,x):
y_pred = self.linear(x)
return y_pred
model = LinearRegression()
criterion = torch.nn.MSELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
epoch_list = []
loss_list = []
print("Before Training ", model(torch.tensor([[4]], dtype = torch.float)).item())
Before Training 3.9182913303375244
for epoch in range(500):
y_pred = model(x_data)
loss = criterion(y_pred,y_data)
optimizer.zero_grad()
loss.backward()
optimizer.step()
epoch_list.append(epoch)
loss_list.append(loss.item())
plt.plot(epoch_list,loss_list)
[<matplotlib.lines.Line2D at 0x118035978>]
print("After Training ", model(torch.tensor([[4]], dtype = torch.float)).item())
After Training 7.980043411254883
list(model.parameters())
[Parameter containing: tensor([[ 1.9884]]), Parameter containing: tensor(1.00000e-02 * [ 2.6272])]