import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
N = 10 # number of data points
m = .7
c = 0
x = np.linspace(0,2*np.pi,N)
y = m*x + c + np.random.normal(0,.3,x.shape)
plt.figure()
plt.plot(x,y,'o')
plt.xlabel('x')
plt.ylabel('y')
plt.title('2D data (#data = %d)' % N)
plt.show()
import torch
from torch.utils.data import Dataset
class MyDataset(Dataset):
def __init__(self, x, y):
self.x = x
self.y = y
def __len__(self):
return len(self.x)
def __getitem__(self, idx):
sample = {
'feature': torch.tensor([1,self.x[idx]]),
'label': torch.tensor([self.y[idx]])}
return sample
dataset = MyDataset(x, y)
for i in range(len(dataset)):
sample = dataset[i]
print(i, sample['feature'], sample['label'])
0 tensor([1., 0.]) tensor([0.1019]) 1 tensor([1.0000, 0.6981]) tensor([0.3657]) 2 tensor([1.0000, 1.3963]) tensor([0.7600]) 3 tensor([1.0000, 2.0944]) tensor([1.5153]) 4 tensor([1.0000, 2.7925]) tensor([2.3835]) 5 tensor([1.0000, 3.4907]) tensor([3.0468]) 6 tensor([1.0000, 4.1888]) tensor([2.5200]) 7 tensor([1.0000, 4.8869]) tensor([3.6476]) 8 tensor([1.0000, 5.5851]) tensor([3.9853]) 9 tensor([1.0000, 6.2832]) tensor([4.6717])
from torch.utils.data import DataLoader
dataset = MyDataset(x, y)
batch_size = 4
shuffle = True
num_workers = 4
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=shuffle, num_workers=num_workers)
import pprint as pp
for i_batch, samples in enumerate(dataloader):
print('\nbatch# = %s' % i_batch)
print('samples: ')
pp.pprint(samples)
batch# = 0 samples: {'feature': tensor([[1.0000, 2.0944], [1.0000, 6.2832], [1.0000, 1.3963], [1.0000, 4.1888]]), 'label': tensor([[1.5153], [4.6717], [0.7600], [2.5200]])} batch# = 1 samples: {'feature': tensor([[1.0000, 5.5851], [1.0000, 2.7925], [1.0000, 0.0000], [1.0000, 3.4907]]), 'label': tensor([[3.9853], [2.3835], [0.1019], [3.0468]])} batch# = 2 samples: {'feature': tensor([[1.0000, 4.8869], [1.0000, 0.6981]]), 'label': tensor([[3.6476], [0.3657]])}
import torch.nn as nn
from torch.nn.parameter import Parameter
class MyModel(nn.Module):
def __init__(self, input_dim, output_dim):
super(MyModel, self).__init__()
self.weight = Parameter(torch.Tensor(output_dim, input_dim))
self.bias = Parameter(torch.Tensor(output_dim, 1))
stdv = 1.
self.weight.data.uniform_(-stdv, stdv)
self.bias.data.uniform_(-stdv, stdv)
def forward(self, x):
weight_and_bias = torch.cat((self.weight, self.bias), 1)
#print(weight_and_bias)
#print(weight_and_bias.t().shape)
#print(x.shape)
#print(self.weight.size())
out = x.matmul(weight_and_bias.t())
return out
input_dim = 1
output_dim = 1
model = MyModel(input_dim, output_dim)
Often called loss or error
import torch.nn as nn
class MyLoss(nn.Module):
def __init__(self):
super(MyLoss, self).__init__()
def forward(self, predictions, targets):
print(predictions)
print(targets)
diff = torch.sub(predictions, targets)
diff2 = torch.pow(diff, 2)
err = torch.sum(diff2)
return err
cost = MyLoss()
In other words training (or learning from data)
num_epochs = 100 # How many times the entire training data is seen?
l_rate = 0.01
optimiser = torch.optim.SGD(model.parameters(), lr = l_rate)
dataset = MyDataset(x, y)
batch_size = 4
shuffle = True
num_workers = 4
training_sample_generator = DataLoader(dataset, batch_size=batch_size, shuffle=shuffle, num_workers=num_workers)
for epoch in range(num_epochs):
if epoch % 10 == 0:
print('Epoch = %s' % epoch)
for batch_i, samples in enumerate(training_sample_generator):
predictions = model(samples['feature'])
error = cost(predictions, samples['label'])
if epoch % 10 == 0:
print('\tBatch = %s, Error = %s' % (batch_i, error.item()))
# Before the backward pass, use the optimizer object to zero all of the
# gradients for the variables it will update (which are the learnable
# weights of the model). This is because by default, gradients are
# accumulated in buffers( i.e, not overwritten) whenever .backward()
# is called. Checkout docs of torch.autograd.backward for more details.
optimiser.zero_grad()
# Backward pass: compute gradient of the loss with respect to model
# parameters
error.backward()
# Calling the step function on an Optimizer makes an update to its
# parameters
optimiser.step()
Epoch = 0 tensor([[2.1582], [1.2339], [1.0491], [1.7885]], grad_fn=<MmBackward>) tensor([[3.9853], [1.5153], [0.7600], [2.5200]]) Batch = 0, Error = 4.036039352416992 tensor([[0.7303], [1.1031], [3.3394], [2.2212]], grad_fn=<MmBackward>) tensor([[0.1019], [0.3657], [3.6476], [2.3835]]) Batch = 1, Error = 1.0599795579910278 tensor([[4.2485], [2.6769]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468]]) Batch = 2, Error = 0.316006064414978 tensor([[2.9686], [1.1764], [4.3127], [3.8647]], grad_fn=<MmBackward>) tensor([[3.0468], [0.3657], [3.9853], [3.6476]]) tensor([[3.1245], [2.3173], [4.3354], [0.7028]], grad_fn=<MmBackward>) tensor([[2.5200], [2.3835], [4.6717], [0.1019]]) tensor([[1.4874], [1.8878]], grad_fn=<MmBackward>) tensor([[0.7600], [1.5153]]) tensor([[2.1658], [4.0423], [2.5411], [3.6670]], grad_fn=<MmBackward>) tensor([[2.3835], [4.6717], [3.0468], [3.9853]]) tensor([[4.1174], [2.1635], [1.1866], [3.6289]], grad_fn=<MmBackward>) tensor([[3.6476], [1.5153], [0.3657], [2.5200]]) tensor([[0.6372], [1.3664]], grad_fn=<MmBackward>) tensor([[0.1019], [0.7600]]) tensor([[1.3199], [0.9671], [3.0838], [1.6727]], grad_fn=<MmBackward>) tensor([[0.7600], [0.3657], [3.6476], [1.5153]]) tensor([[2.8184], [2.4486], [0.5992], [3.9281]], grad_fn=<MmBackward>) tensor([[2.5200], [3.0468], [0.1019], [4.6717]]) tensor([[4.1847], [2.3974]], grad_fn=<MmBackward>) tensor([[3.9853], [2.3835]]) tensor([[2.7595], [0.6059], [1.0366], [4.4824]], grad_fn=<MmBackward>) tensor([[3.0468], [0.1019], [0.3657], [4.6717]]) tensor([[1.9563], [4.2303], [3.7755], [1.5015]], grad_fn=<MmBackward>) tensor([[1.5153], [3.9853], [3.6476], [0.7600]]) tensor([[2.1593], [2.9585]], grad_fn=<MmBackward>) tensor([[2.3835], [2.5200]]) tensor([[0.5565], [3.2355], [3.6182], [2.4701]], grad_fn=<MmBackward>) tensor([[0.1019], [3.6476], [3.9853], [3.0468]]) tensor([[3.3800], [1.0421], [1.5097], [1.9773]], grad_fn=<MmBackward>) tensor([[2.5200], [0.3657], [0.7600], [1.5153]]) tensor([[2.0498], [3.9626]], grad_fn=<MmBackward>) tensor([[2.3835], [4.6717]]) tensor([[0.9982], [2.3716], [1.9138], [1.4560]], grad_fn=<MmBackward>) tensor([[0.3657], [2.3835], [1.5153], [0.7600]]) tensor([[4.3478], [3.4941], [3.0673], [2.6404]], grad_fn=<MmBackward>) tensor([[4.6717], [3.6476], [2.5200], [3.0468]]) tensor([[4.1412], [0.5129]], grad_fn=<MmBackward>) tensor([[3.9853], [0.1019]]) tensor([[0.5016], [0.9429], [3.1499], [2.7085]], grad_fn=<MmBackward>) tensor([[0.1019], [0.3657], [2.5200], [3.0468]]) tensor([[1.3070], [2.1378], [1.7224], [3.3840]], grad_fn=<MmBackward>) tensor([[0.7600], [2.3835], [1.5153], [3.6476]]) tensor([[3.8813], [4.3075]], grad_fn=<MmBackward>) tensor([[3.9853], [4.6717]]) tensor([[4.2112], [2.8122], [4.6775], [1.8796]], grad_fn=<MmBackward>) tensor([[3.9853], [3.0468], [4.6717], [1.5153]]) tensor([[1.3714], [0.4734], [2.2693], [3.1673]], grad_fn=<MmBackward>) tensor([[0.7600], [0.1019], [2.3835], [2.5200]]) tensor([[0.8468], [3.2687]], grad_fn=<MmBackward>) tensor([[0.3657], [3.6476]]) tensor([[1.2907], [2.5652], [0.8659], [1.7155]], grad_fn=<MmBackward>) tensor([[0.7600], [3.0468], [0.3657], [1.5153]]) tensor([[0.4261], [4.2710], [2.9894], [3.4166]], grad_fn=<MmBackward>) tensor([[0.1019], [4.6717], [2.5200], [3.6476]]) tensor([[4.0283], [2.2256]], grad_fn=<MmBackward>) tensor([[3.9853], [2.3835]]) Epoch = 10 tensor([[3.5996], [2.2391], [1.3321], [4.5066]], grad_fn=<MmBackward>) tensor([[3.6476], [2.3835], [0.7600], [4.6717]]) Batch = 0, Error = 0.37773826718330383 tensor([[0.4208], [0.8866], [1.8181], [4.1467]], grad_fn=<MmBackward>) tensor([[0.1019], [0.3657], [1.5153], [3.9853]]) Batch = 1, Error = 0.4907659888267517 tensor([[2.5909], [3.0301]], grad_fn=<MmBackward>) tensor([[3.0468], [2.5200]]) Batch = 2, Error = 0.46807536482810974 tensor([[1.2569], [3.4149], [0.3937], [2.9833]], grad_fn=<MmBackward>) tensor([[0.7600], [3.6476], [0.1019], [2.5200]]) tensor([[4.0696], [0.7840], [1.6054], [2.0161]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657], [1.5153], [2.3835]]) tensor([[2.7382], [4.1516]], grad_fn=<MmBackward>) tensor([[3.0468], [3.9853]]) tensor([[3.2246], [4.1711], [1.3318], [0.8586]], grad_fn=<MmBackward>) tensor([[2.5200], [3.9853], [0.7600], [0.3657]]) tensor([[3.1572], [0.3463], [1.9525], [1.5510]], grad_fn=<MmBackward>) tensor([[3.6476], [0.1019], [2.3835], [1.5153]]) tensor([[2.6130], [4.4162]], grad_fn=<MmBackward>) tensor([[3.0468], [4.6717]]) tensor([[0.8672], [0.3729], [1.3616], [4.8220]], grad_fn=<MmBackward>) tensor([[0.3657], [0.1019], [0.7600], [4.6717]]) tensor([[2.6651], [3.5942], [4.0588], [3.1297]], grad_fn=<MmBackward>) tensor([[3.0468], [3.6476], [3.9853], [2.5200]]) tensor([[2.1191], [1.6737]], grad_fn=<MmBackward>) tensor([[2.3835], [1.5153]]) tensor([[3.0461], [2.1439], [1.6928], [3.4972]], grad_fn=<MmBackward>) tensor([[2.5200], [2.3835], [1.5153], [3.6476]]) tensor([[2.5070], [0.7680], [4.2459], [0.3333]], grad_fn=<MmBackward>) tensor([[3.0468], [0.3657], [4.6717], [0.1019]]) tensor([[1.3289], [4.2958]], grad_fn=<MmBackward>) tensor([[0.7600], [3.9853]]) tensor([[3.0774], [3.5366], [1.2407], [1.6999]], grad_fn=<MmBackward>) tensor([[2.5200], [3.6476], [0.7600], [1.5153]]) tensor([[4.0746], [0.7195], [3.6552], [1.9776]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657], [3.9853], [2.3835]]) tensor([[0.3197], [2.8692]], grad_fn=<MmBackward>) tensor([[0.1019], [3.0468]]) tensor([[0.3189], [3.4302], [1.8746], [1.3560]], grad_fn=<MmBackward>) tensor([[0.1019], [2.5200], [1.5153], [0.7600]]) tensor([[2.4932], [3.8228], [4.2660], [2.0500]], grad_fn=<MmBackward>) tensor([[3.0468], [3.9853], [4.6717], [2.3835]]) tensor([[4.0265], [0.8378]], grad_fn=<MmBackward>) tensor([[3.6476], [0.3657]]) tensor([[4.2973], [2.7943], [0.2893], [3.7963]], grad_fn=<MmBackward>) tensor([[3.9853], [3.0468], [0.1019], [3.6476]]) tensor([[1.2391], [4.5909], [1.7179], [3.1544]], grad_fn=<MmBackward>) tensor([[0.7600], [4.6717], [1.5153], [2.5200]]) tensor([[0.6903], [1.9909]], grad_fn=<MmBackward>) tensor([[0.3657], [2.3835]]) tensor([[2.9323], [3.8237], [1.1495], [0.2581]], grad_fn=<MmBackward>) tensor([[2.5200], [3.9853], [0.7600], [0.1019]]) tensor([[1.9486], [0.6687], [1.5220], [3.2284]], grad_fn=<MmBackward>) tensor([[2.3835], [0.3657], [1.5153], [3.6476]]) tensor([[4.4742], [2.5981]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468]]) tensor([[1.7906], [1.2824], [2.8070], [3.8235]], grad_fn=<MmBackward>) tensor([[1.5153], [0.7600], [3.0468], [3.6476]]) tensor([[4.6583], [0.7409], [0.2513], [2.2099]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657], [0.1019], [2.3835]]) tensor([[3.2083], [4.1962]], grad_fn=<MmBackward>) tensor([[2.5200], [3.9853]]) Epoch = 20 tensor([[2.8501], [1.5383], [1.9756], [4.1619]], grad_fn=<MmBackward>) tensor([[2.5200], [1.5153], [2.3835], [4.6717]]) Batch = 0, Error = 0.5358420014381409 tensor([[0.7157], [0.2378], [1.1937], [4.0611]], grad_fn=<MmBackward>) tensor([[0.3657], [0.1019], [0.7600], [3.9853]]) Batch = 1, Error = 0.33479544520378113 tensor([[3.4389], [2.5186]], grad_fn=<MmBackward>) tensor([[3.6476], [3.0468]]) Batch = 2, Error = 0.32255789637565613 tensor([[3.7335], [2.7333], [0.2327], [4.2336]], grad_fn=<MmBackward>) tensor([[3.6476], [3.0468], [0.1019], [3.9853]]) tensor([[1.7002], [1.2100], [2.1903], [0.7198]], grad_fn=<MmBackward>) tensor([[1.5153], [0.7600], [2.3835], [0.3657]]) tensor([[4.5344], [3.0942]], grad_fn=<MmBackward>) tensor([[4.6717], [2.5200]]) tensor([[3.4148], [4.3319], [1.1221], [0.6635]], grad_fn=<MmBackward>) tensor([[3.6476], [4.6717], [0.7600], [0.3657]]) tensor([[0.2032], [3.1690], [4.1575], [2.6747]], grad_fn=<MmBackward>) tensor([[0.1019], [2.5200], [3.9853], [3.0468]]) tensor([[1.5754], [2.0364]], grad_fn=<MmBackward>) tensor([[1.5153], [2.3835]]) tensor([[0.6708], [3.5077], [3.0349], [1.1436]], grad_fn=<MmBackward>) tensor([[0.3657], [3.6476], [2.5200], [0.7600]]) tensor([[1.9439], [3.7111], [1.5021], [2.3857]], grad_fn=<MmBackward>) tensor([[2.3835], [3.9853], [1.5153], [3.0468]]) tensor([[0.2045], [4.8209]], grad_fn=<MmBackward>) tensor([[0.1019], [4.6717]]) tensor([[1.6990], [4.6981], [0.6993], [4.1982]], grad_fn=<MmBackward>) tensor([[1.5153], [4.6717], [0.3657], [3.9853]]) tensor([[3.0182], [3.4905], [0.1843], [2.0736]], grad_fn=<MmBackward>) tensor([[2.5200], [3.6476], [0.1019], [2.3835]]) tensor([[1.1140], [2.5119]], grad_fn=<MmBackward>) tensor([[0.7600], [3.0468]]) tensor([[2.6114], [3.0965], [0.6708], [0.1856]], grad_fn=<MmBackward>) tensor([[3.0468], [2.5200], [0.3657], [0.1019]]) tensor([[2.0538], [3.4628], [4.4021], [1.5841]], grad_fn=<MmBackward>) tensor([[2.3835], [3.6476], [4.6717], [1.5153]]) tensor([[4.3236], [1.2229]], grad_fn=<MmBackward>) tensor([[3.9853], [0.7600]]) tensor([[2.0988], [0.6547], [1.1361], [4.0244]], grad_fn=<MmBackward>) tensor([[2.3835], [0.3657], [0.7600], [3.9853]]) tensor([[1.6028], [3.0407], [4.4785], [0.1649]], grad_fn=<MmBackward>) tensor([[1.5153], [2.5200], [4.6717], [0.1019]]) tensor([[3.3980], [2.4715]], grad_fn=<MmBackward>) tensor([[3.6476], [3.0468]]) tensor([[4.2383], [2.7134], [2.2051], [1.1885]], grad_fn=<MmBackward>) tensor([[3.9853], [3.0468], [2.3835], [0.7600]]) tensor([[0.6719], [0.1685], [1.6788], [4.6994]], grad_fn=<MmBackward>) tensor([[0.3657], [0.1019], [1.5153], [4.6717]]) tensor([[3.6099], [3.1167]], grad_fn=<MmBackward>) tensor([[3.6476], [2.5200]]) tensor([[0.1460], [2.4506], [2.9115], [1.9897]], grad_fn=<MmBackward>) tensor([[0.1019], [3.0468], [2.5200], [2.3835]]) tensor([[3.5341], [1.1220], [1.6044], [4.0166]], grad_fn=<MmBackward>) tensor([[3.6476], [0.7600], [1.5153], [3.9853]]) tensor([[4.4524], [0.6278]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657]]) tensor([[4.1070], [0.6436], [4.6017], [2.1279]], grad_fn=<MmBackward>) tensor([[3.9853], [0.3657], [4.6717], [2.3835]]) tensor([[1.6434], [0.1474], [3.1394], [1.1447]], grad_fn=<MmBackward>) tensor([[1.5153], [0.1019], [2.5200], [0.7600]]) tensor([[3.2822], [2.3798]], grad_fn=<MmBackward>) tensor([[3.6476], [3.0468]]) Epoch = 30 tensor([[0.1445], [4.2136], [1.6704], [0.6531]], grad_fn=<MmBackward>) tensor([[0.1019], [3.9853], [1.5153], [0.3657]]) Batch = 0, Error = 0.16057457029819489 tensor([[3.5147], [2.0642], [1.0972], [2.5477]], grad_fn=<MmBackward>) tensor([[3.6476], [2.3835], [0.7600], [3.0468]]) Batch = 1, Error = 0.48238328099250793 tensor([[4.8474], [3.2791]], grad_fn=<MmBackward>) tensor([[4.6717], [2.5200]]) Batch = 2, Error = 0.6071034669876099 tensor([[3.3645], [1.5127], [4.2904], [1.0497]], grad_fn=<MmBackward>) tensor([[3.6476], [1.5153], [4.6717], [0.7600]]) tensor([[2.6821], [4.2126], [3.1923], [0.6415]], grad_fn=<MmBackward>) tensor([[3.0468], [3.9853], [2.5200], [0.3657]]) tensor([[1.9879], [0.1151]], grad_fn=<MmBackward>) tensor([[2.3835], [0.1019]]) tensor([[2.0573], [1.5737], [1.0900], [0.1228]], grad_fn=<MmBackward>) tensor([[2.3835], [1.5153], [0.7600], [0.1019]]) tensor([[4.0267], [0.6093], [3.5385], [3.0503]], grad_fn=<MmBackward>) tensor([[3.9853], [0.3657], [3.6476], [2.5200]]) tensor([[4.2382], [2.4021]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468]]) tensor([[3.2994], [3.8279], [0.1286], [4.8849]], grad_fn=<MmBackward>) tensor([[2.5200], [3.6476], [0.1019], [4.6717]]) tensor([[1.4602], [3.7197], [2.3640], [1.9121]], grad_fn=<MmBackward>) tensor([[1.5153], [3.9853], [3.0468], [2.3835]]) tensor([[1.1858], [0.6599]], grad_fn=<MmBackward>) tensor([[0.7600], [0.3657]]) tensor([[1.1491], [3.7226], [1.6638], [4.2373]], grad_fn=<MmBackward>) tensor([[0.7600], [3.6476], [1.5153], [3.9853]]) tensor([[4.4045], [0.1024], [2.0144], [2.9704]], grad_fn=<MmBackward>) tensor([[4.6717], [0.1019], [2.3835], [2.5200]]) tensor([[2.5536], [0.5956]], grad_fn=<MmBackward>) tensor([[3.0468], [0.3657]]) tensor([[3.1792], [0.1114], [4.7131], [2.1566]], grad_fn=<MmBackward>) tensor([[2.5200], [0.1019], [4.6717], [2.3835]]) tensor([[2.4916], [3.4475], [1.5356], [1.0576]], grad_fn=<MmBackward>) tensor([[3.0468], [3.6476], [1.5153], [0.7600]]) tensor([[4.2088], [0.6227]], grad_fn=<MmBackward>) tensor([[3.9853], [0.3657]]) tensor([[3.0550], [0.1008], [0.5932], [2.0703]], grad_fn=<MmBackward>) tensor([[2.5200], [0.1019], [0.3657], [2.3835]]) tensor([[3.3893], [1.5051], [1.0340], [3.8604]], grad_fn=<MmBackward>) tensor([[3.6476], [1.5153], [0.7600], [3.9853]]) tensor([[2.5612], [4.5348]], grad_fn=<MmBackward>) tensor([[3.0468], [4.6717]]) tensor([[3.8102], [4.3393], [1.6939], [1.1649]], grad_fn=<MmBackward>) tensor([[3.6476], [3.9853], [1.5153], [0.7600]]) tensor([[2.9483], [1.9937], [0.0847], [2.4710]], grad_fn=<MmBackward>) tensor([[2.5200], [2.3835], [0.1019], [3.0468]]) tensor([[4.5550], [0.5913]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657]]) tensor([[3.1147], [2.1077], [0.5971], [1.6042]], grad_fn=<MmBackward>) tensor([[2.5200], [2.3835], [0.3657], [1.5153]]) tensor([[3.8779], [3.4032], [4.3525], [0.0808]], grad_fn=<MmBackward>) tensor([[3.9853], [3.6476], [4.6717], [0.1019]]) tensor([[2.7331], [1.1501]], grad_fn=<MmBackward>) tensor([[3.0468], [0.7600]]) tensor([[0.6285], [1.6993], [3.3054], [0.0932]], grad_fn=<MmBackward>) tensor([[0.3657], [1.5153], [2.5200], [0.1019]]) tensor([[2.4762], [3.4392], [3.9207], [1.0317]], grad_fn=<MmBackward>) tensor([[3.0468], [3.6476], [3.9853], [0.7600]]) tensor([[4.7897], [2.1732]], grad_fn=<MmBackward>) tensor([[4.6717], [2.3835]]) Epoch = 40 tensor([[2.6876], [3.7299], [0.6031], [1.6454]], grad_fn=<MmBackward>) tensor([[3.0468], [3.6476], [0.3657], [1.5153]]) Batch = 0, Error = 0.20905181765556335 tensor([[0.0802], [1.1340], [4.2954], [4.8223]], grad_fn=<MmBackward>) tensor([[0.1019], [0.7600], [3.9853], [4.6717]]) Batch = 1, Error = 0.2591085433959961 tensor([[1.9928], [2.9573]], grad_fn=<MmBackward>) tensor([[2.3835], [2.5200]]) Batch = 2, Error = 0.34384119510650635 tensor([[0.5349], [0.0630], [3.8381], [3.3662]], grad_fn=<MmBackward>) tensor([[0.3657], [0.1019], [3.9853], [3.6476]]) tensor([[2.0726], [4.5773], [2.5736], [3.0745]], grad_fn=<MmBackward>) tensor([[2.3835], [4.6717], [3.0468], [2.5200]]) tensor([[1.0994], [1.6113]], grad_fn=<MmBackward>) tensor([[0.7600], [1.5153]]) tensor([[1.5743], [0.5693], [0.0667], [1.0718]], grad_fn=<MmBackward>) tensor([[1.5153], [0.3657], [0.1019], [0.7600]]) tensor([[3.0125], [3.9980], [2.5197], [3.5052]], grad_fn=<MmBackward>) tensor([[2.5200], [3.9853], [3.0468], [3.6476]]) tensor([[2.0527], [4.5446]], grad_fn=<MmBackward>) tensor([[2.3835], [4.6717]]) tensor([[1.6357], [2.6805], [3.2029], [2.1581]], grad_fn=<MmBackward>) tensor([[1.5153], [3.0468], [2.5200], [2.3835]]) tensor([[1.0754], [0.0641], [3.6034], [4.1090]], grad_fn=<MmBackward>) tensor([[0.7600], [0.1019], [3.6476], [3.9853]]) tensor([[0.5498], [4.4925]], grad_fn=<MmBackward>) tensor([[0.3657], [4.6717]]) tensor([[1.0704], [0.5637], [1.5772], [2.5907]], grad_fn=<MmBackward>) tensor([[0.7600], [0.3657], [1.5153], [3.0468]]) tensor([[0.0546], [3.1698], [3.6890], [4.7274]], grad_fn=<MmBackward>) tensor([[0.1019], [2.5200], [3.6476], [4.6717]]) tensor([[1.9346], [3.8285]], grad_fn=<MmBackward>) tensor([[2.3835], [3.9853]]) tensor([[3.5753], [1.0592], [2.0656], [2.5688]], grad_fn=<MmBackward>) tensor([[3.6476], [0.7600], [2.3835], [3.0468]]) tensor([[0.0641], [0.6021], [4.3682], [3.2922]], grad_fn=<MmBackward>) tensor([[0.1019], [0.3657], [3.9853], [2.5200]]) tensor([[1.4191], [4.1832]], grad_fn=<MmBackward>) tensor([[1.5153], [4.6717]]) tensor([[4.6059], [3.0869], [1.5678], [1.0615]], grad_fn=<MmBackward>) tensor([[4.6717], [2.5200], [1.5153], [0.7600]]) tensor([[0.0316], [3.8041], [0.5032], [1.9179]], grad_fn=<MmBackward>) tensor([[0.1019], [3.9853], [0.3657], [2.3835]]) tensor([[3.5608], [2.5558]], grad_fn=<MmBackward>) tensor([[3.6476], [3.0468]]) tensor([[0.0548], [2.7166], [4.3137], [3.7813]], grad_fn=<MmBackward>) tensor([[0.1019], [3.0468], [3.9853], [3.6476]]) tensor([[1.5943], [3.1355], [2.1080], [4.6766]], grad_fn=<MmBackward>) tensor([[1.5153], [2.5200], [2.3835], [4.6717]]) tensor([[1.0161], [0.5303]], grad_fn=<MmBackward>) tensor([[0.7600], [0.3657]]) tensor([[2.9110], [1.4736], [3.3902], [4.3484]], grad_fn=<MmBackward>) tensor([[2.5200], [1.5153], [3.6476], [4.6717]]) tensor([[0.5442], [2.5579], [4.0682], [1.0477]], grad_fn=<MmBackward>) tensor([[0.3657], [3.0468], [3.9853], [0.7600]]) tensor([[2.0934], [0.0396]], grad_fn=<MmBackward>) tensor([[2.3835], [0.1019]]) tensor([[2.6704], [0.0467], [3.7199], [0.5714]], grad_fn=<MmBackward>) tensor([[3.0468], [0.1019], [3.6476], [0.3657]]) tensor([[2.1944], [1.6582], [4.3390], [1.1221]], grad_fn=<MmBackward>) tensor([[2.3835], [1.5153], [3.9853], [0.7600]]) tensor([[4.5788], [3.0646]], grad_fn=<MmBackward>) tensor([[4.6717], [2.5200]]) Epoch = 50 tensor([[1.4704], [1.9514], [4.3565], [0.9894]], grad_fn=<MmBackward>) tensor([[1.5153], [2.3835], [4.6717], [0.7600]]) Batch = 0, Error = 0.34073713421821594 tensor([[4.2175], [2.6504], [0.5609], [3.1728]], grad_fn=<MmBackward>) tensor([[3.9853], [3.0468], [0.3657], [2.5200]]) Batch = 1, Error = 0.6752656102180481 tensor([[0.0249], [3.4094]], grad_fn=<MmBackward>) tensor([[0.1019], [3.6476]]) Batch = 2, Error = 0.06266370415687561 tensor([[0.0312], [1.5305], [2.0302], [3.5295]], grad_fn=<MmBackward>) tensor([[0.1019], [1.5153], [2.3835], [3.6476]]) tensor([[1.0840], [3.1686], [4.7320], [4.2109]], grad_fn=<MmBackward>) tensor([[0.7600], [2.5200], [4.6717], [3.9853]]) tensor([[0.4706], [2.2866]], grad_fn=<MmBackward>) tensor([[0.3657], [3.0468]]) tensor([[0.0297], [1.4998], [2.4799], [3.9500]], grad_fn=<MmBackward>) tensor([[0.1019], [1.5153], [3.0468], [3.9853]]) tensor([[3.6896], [2.1270], [0.5644], [4.7314]], grad_fn=<MmBackward>) tensor([[3.6476], [2.3835], [0.3657], [4.6717]]) tensor([[3.1677], [1.0843]], grad_fn=<MmBackward>) tensor([[2.5200], [0.7600]]) tensor([[4.3129], [2.4064], [1.9297], [2.8830]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468], [2.3835], [2.5200]]) tensor([[1.1166], [4.3313], [0.0450], [1.6523]], grad_fn=<MmBackward>) tensor([[0.7600], [3.9853], [0.1019], [1.5153]]) tensor([[0.5272], [3.5143]], grad_fn=<MmBackward>) tensor([[0.3657], [3.6476]]) tensor([[1.0395], [1.5449], [4.5771], [0.5341]], grad_fn=<MmBackward>) tensor([[0.7600], [1.5153], [4.6717], [0.3657]]) tensor([[2.0440], [3.5611], [3.0554], [0.0211]], grad_fn=<MmBackward>) tensor([[2.3835], [3.6476], [2.5200], [0.1019]]) tensor([[2.4882], [3.9689]], grad_fn=<MmBackward>) tensor([[3.0468], [3.9853]]) tensor([[3.1643], [2.1202], [2.6423], [1.0761]], grad_fn=<MmBackward>) tensor([[2.5200], [2.3835], [3.0468], [0.7600]]) tensor([[0.0262], [1.5507], [3.5835], [0.5344]], grad_fn=<MmBackward>) tensor([[0.1019], [1.5153], [3.6476], [0.3657]]) tensor([[4.6138], [4.1039]], grad_fn=<MmBackward>) tensor([[4.6717], [3.9853]]) tensor([[0.5294], [1.5408], [2.0465], [0.0237]], grad_fn=<MmBackward>) tensor([[0.3657], [1.5153], [2.3835], [0.1019]]) tensor([[2.6107], [4.6768], [1.0612], [4.1603]], grad_fn=<MmBackward>) tensor([[3.0468], [4.6717], [0.7600], [3.9853]]) tensor([[3.6519], [3.1341]], grad_fn=<MmBackward>) tensor([[3.6476], [2.5200]]) tensor([[3.8677], [3.3861], [1.4597], [0.4965]], grad_fn=<MmBackward>) tensor([[3.9853], [3.6476], [1.5153], [0.3657]]) tensor([[4.6017], [2.0569], [2.5658], [1.0389]], grad_fn=<MmBackward>) tensor([[4.6717], [2.3835], [3.0468], [0.7600]]) tensor([[3.3081], [0.0330]], grad_fn=<MmBackward>) tensor([[2.5200], [0.1019]]) tensor([[2.5174], [2.0176], [3.5169], [0.0186]], grad_fn=<MmBackward>) tensor([[3.0468], [2.3835], [3.6476], [0.1019]]) tensor([[4.9795], [0.5895], [1.6870], [4.4307]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657], [1.5153], [3.9853]]) tensor([[2.8967], [0.9774]], grad_fn=<MmBackward>) tensor([[2.5200], [0.7600]]) tensor([[3.6343], [3.1807], [2.2736], [1.8201]], grad_fn=<MmBackward>) tensor([[3.9853], [3.6476], [3.0468], [2.3835]]) tensor([[3.4836], [1.7663], [0.0490], [1.1939]], grad_fn=<MmBackward>) tensor([[2.5200], [1.5153], [0.1019], [0.7600]]) tensor([[4.5196], [0.5174]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657]]) Epoch = 60 tensor([[0.0171], [3.6021], [2.0657], [0.5293]], grad_fn=<MmBackward>) tensor([[0.1019], [3.6476], [2.3835], [0.3657]]) Batch = 0, Error = 0.1369948536157608 tensor([[1.0749], [4.2312], [1.6009], [4.7572]], grad_fn=<MmBackward>) tensor([[0.7600], [3.9853], [1.5153], [4.6717]]) Batch = 1, Error = 0.17421618103981018 tensor([[2.9526], [2.4618]], grad_fn=<MmBackward>) tensor([[2.5200], [3.0468]]) Batch = 2, Error = 0.5293147563934326 tensor([[2.9749], [2.4809], [0.0112], [0.9991]], grad_fn=<MmBackward>) tensor([[2.5200], [3.0468], [0.1019], [0.7600]]) tensor([[1.9715], [0.5007], [4.4228], [1.4812]], grad_fn=<MmBackward>) tensor([[2.3835], [0.3657], [4.6717], [1.5153]]) tensor([[3.7166], [4.2444]], grad_fn=<MmBackward>) tensor([[3.6476], [3.9853]]) tensor([[3.5357], [1.5239], [4.0386], [3.0327]], grad_fn=<MmBackward>) tensor([[3.6476], [1.5153], [3.9853], [2.5200]]) tensor([[0.4820], [4.2915], [0.0058], [2.3868]], grad_fn=<MmBackward>) tensor([[0.3657], [4.6717], [0.1019], [3.0468]]) tensor([[1.1074], [2.1886]], grad_fn=<MmBackward>) tensor([[0.7600], [2.3835]]) tensor([[2.7302], [0.0232], [1.1060], [2.1888]], grad_fn=<MmBackward>) tensor([[3.0468], [0.1019], [0.7600], [2.3835]]) tensor([[3.9318], [1.7011], [3.3742], [0.5858]], grad_fn=<MmBackward>) tensor([[3.6476], [1.5153], [2.5200], [0.3657]]) tensor([[3.8432], [4.3239]], grad_fn=<MmBackward>) tensor([[3.9853], [4.6717]]) tensor([[4.7081], [2.6187], [0.0070], [4.1858]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468], [0.1019], [3.9853]]) tensor([[3.1591], [2.1103], [0.5371], [1.5859]], grad_fn=<MmBackward>) tensor([[2.5200], [2.3835], [0.3657], [1.5153]]) tensor([[0.9884], [3.4581]], grad_fn=<MmBackward>) tensor([[0.7600], [3.6476]]) tensor([[ 4.5215], [ 2.5118], [ 1.0046], [-0.0002]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468], [0.7600], [0.1019]]) tensor([[4.3058], [0.5475], [3.7689], [2.1582]], grad_fn=<MmBackward>) tensor([[3.9853], [0.3657], [3.6476], [2.3835]]) tensor([[1.5346], [3.0665]], grad_fn=<MmBackward>) tensor([[1.5153], [2.5200]]) tensor([[ 1.4257], [ 1.9038], [ 3.8162], [-0.0086]], grad_fn=<MmBackward>) tensor([[1.5153], [2.3835], [3.9853], [0.1019]]) tensor([[3.5967], [3.0841], [2.5714], [4.6219]], grad_fn=<MmBackward>) tensor([[3.6476], [2.5200], [3.0468], [4.6717]]) tensor([[0.5192], [1.0299]], grad_fn=<MmBackward>) tensor([[0.3657], [0.7600]]) tensor([[1.5118], [4.5351], [4.0312], [3.5273]], grad_fn=<MmBackward>) tensor([[1.5153], [4.6717], [3.9853], [3.6476]]) tensor([[3.1281], [1.0456], [0.5250], [2.0868]], grad_fn=<MmBackward>) tensor([[2.5200], [0.7600], [0.3657], [2.3835]]) tensor([[ 2.4367], [-0.0107]], grad_fn=<MmBackward>) tensor([[3.0468], [0.1019]]) tensor([[2.5999], [2.0806], [4.1575], [1.0422]], grad_fn=<MmBackward>) tensor([[3.0468], [2.3835], [3.9853], [0.7600]]) tensor([[0.0096], [1.6113], [3.2130], [3.7469]], grad_fn=<MmBackward>) tensor([[0.1019], [1.5153], [2.5200], [3.6476]]) tensor([[4.3477], [0.4775]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657]]) tensor([[ 0.5091], [ 2.5535], [-0.0020], [ 1.5313]], grad_fn=<MmBackward>) tensor([[0.3657], [3.0468], [0.1019], [1.5153]]) tensor([[2.1399], [3.7397], [3.2065], [4.2730]], grad_fn=<MmBackward>) tensor([[2.3835], [3.6476], [2.5200], [3.9853]]) tensor([[0.9381], [4.2555]], grad_fn=<MmBackward>) tensor([[0.7600], [4.6717]]) Epoch = 70 tensor([[4.0507], [1.5159], [1.0089], [4.5577]], grad_fn=<MmBackward>) tensor([[3.9853], [1.5153], [0.7600], [4.6717]]) Batch = 0, Error = 0.07924719899892807 tensor([[ 2.0190], [ 2.5260], [-0.0090], [ 0.4980]], grad_fn=<MmBackward>) tensor([[2.3835], [3.0468], [0.1019], [0.3657]]) Batch = 1, Error = 0.4338834285736084 tensor([[3.2801], [3.8254]], grad_fn=<MmBackward>) tensor([[2.5200], [3.6476]]) Batch = 2, Error = 0.6094035506248474 tensor([[3.8992], [1.9444], [1.4557], [2.4331]], grad_fn=<MmBackward>) tensor([[3.9853], [2.3835], [1.5153], [3.0468]]) tensor([[4.9113], [1.1019], [3.8229], [3.2787]], grad_fn=<MmBackward>) tensor([[4.6717], [0.7600], [3.6476], [2.5200]]) tensor([[ 0.4434], [-0.0168]], grad_fn=<MmBackward>) tensor([[0.3657], [0.1019]]) tensor([[ 0.9029], [-0.0160], [ 1.3623], [ 1.8217]], grad_fn=<MmBackward>) tensor([[0.7600], [0.1019], [1.5153], [2.3835]]) tensor([[2.8959], [0.4808], [3.8619], [2.4129]], grad_fn=<MmBackward>) tensor([[2.5200], [0.3657], [3.9853], [3.0468]]) tensor([[3.5061], [4.5070]], grad_fn=<MmBackward>) tensor([[3.6476], [4.6717]]) tensor([[2.1074], [2.6319], [4.7301], [3.6810]], grad_fn=<MmBackward>) tensor([[2.3835], [3.0468], [4.6717], [3.6476]]) tensor([[0.5694], [0.0212], [1.6656], [1.1175]], grad_fn=<MmBackward>) tensor([[0.3657], [0.1019], [1.5153], [0.7600]]) tensor([[3.2173], [4.2868]], grad_fn=<MmBackward>) tensor([[2.5200], [3.9853]]) tensor([[1.8706], [1.4001], [3.2820], [0.9296]], grad_fn=<MmBackward>) tensor([[2.3835], [1.5153], [3.6476], [0.7600]]) tensor([[2.5826], [4.1290], [3.0981], [0.0051]], grad_fn=<MmBackward>) tensor([[3.0468], [3.9853], [2.5200], [0.1019]]) tensor([[0.4950], [4.4398]], grad_fn=<MmBackward>) tensor([[0.3657], [4.6717]]) tensor([[2.5649], [3.0771], [1.0283], [1.5405]], grad_fn=<MmBackward>) tensor([[3.0468], [2.5200], [0.7600], [1.5153]]) tensor([[ 3.4764], [-0.0034], [ 1.9851], [ 0.4937]], grad_fn=<MmBackward>) tensor([[3.6476], [0.1019], [2.3835], [0.3657]]) tensor([[4.7153], [4.1922]], grad_fn=<MmBackward>) tensor([[4.6717], [3.9853]]) tensor([[2.0150], [3.5244], [3.0213], [0.5056]], grad_fn=<MmBackward>) tensor([[2.3835], [3.6476], [2.5200], [0.3657]]) tensor([[ 4.4565], [ 2.4756], [-0.0005], [ 1.4852]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468], [0.1019], [1.5153]]) tensor([[1.1035], [4.3605]], grad_fn=<MmBackward>) tensor([[0.7600], [3.9853]]) tensor([[0.5104], [4.0585], [4.5654], [3.5516]], grad_fn=<MmBackward>) tensor([[0.3657], [3.9853], [4.6717], [3.6476]]) tensor([[2.5814], [1.0345], [3.0970], [1.5501]], grad_fn=<MmBackward>) tensor([[3.0468], [0.7600], [2.5200], [1.5153]]) tensor([[-0.0052], [ 1.9876]], grad_fn=<MmBackward>) tensor([[0.1019], [2.3835]]) tensor([[4.6276], [3.6003], [3.0867], [0.0049]], grad_fn=<MmBackward>) tensor([[4.6717], [3.6476], [2.5200], [0.1019]]) tensor([[0.4849], [1.4601], [2.4353], [3.8980]], grad_fn=<MmBackward>) tensor([[0.3657], [1.5153], [3.0468], [3.9853]]) tensor([[1.0593], [2.1086]], grad_fn=<MmBackward>) tensor([[0.7600], [2.3835]]) tensor([[3.7163], [2.6572], [4.7754], [1.0686]], grad_fn=<MmBackward>) tensor([[3.6476], [3.0468], [4.6717], [0.7600]]) tensor([[0.5364], [2.1226], [3.1801], [0.0077]], grad_fn=<MmBackward>) tensor([[0.3657], [2.3835], [2.5200], [0.1019]]) tensor([[1.4941], [3.9873]], grad_fn=<MmBackward>) tensor([[1.5153], [3.9853]]) Epoch = 80 tensor([[ 2.9932], [-0.0015], [ 3.4923], [ 4.4905]], grad_fn=<MmBackward>) tensor([[2.5200], [0.1019], [3.6476], [4.6717]]) Batch = 0, Error = 0.29155468940734863 tensor([[1.4917], [1.9896], [3.9813], [0.4958]], grad_fn=<MmBackward>) tensor([[1.5153], [2.3835], [3.9853], [0.3657]]) Batch = 1, Error = 0.1726582795381546 tensor([[2.5688], [1.0298]], grad_fn=<MmBackward>) tensor([[3.0468], [0.7600]]) Batch = 2, Error = 0.3012203872203827 tensor([[2.6632], [1.6011], [3.1942], [3.7253]], grad_fn=<MmBackward>) tensor([[3.0468], [1.5153], [2.5200], [3.6476]]) tensor([[1.0038], [0.5013], [2.0088], [4.0189]], grad_fn=<MmBackward>) tensor([[0.7600], [0.3657], [2.3835], [3.9853]]) tensor([[ 4.5739], [-0.0020]], grad_fn=<MmBackward>) tensor([[4.6717], [0.1019]]) tensor([[2.5871], [3.1041], [2.0701], [0.5191]], grad_fn=<MmBackward>) tensor([[3.0468], [2.5200], [2.3835], [0.3657]]) tensor([[1.0347], [1.5507], [0.0028], [4.6466]], grad_fn=<MmBackward>) tensor([[0.7600], [1.5153], [0.1019], [4.6717]]) tensor([[4.0934], [3.5816]], grad_fn=<MmBackward>) tensor([[3.9853], [3.6476]]) tensor([[2.0297], [0.5061], [4.5690], [1.0140]], grad_fn=<MmBackward>) tensor([[2.3835], [0.3657], [4.6717], [0.7600]]) tensor([[-0.0005], [ 3.1456], [ 2.6212], [ 4.1943]], grad_fn=<MmBackward>) tensor([[0.1019], [2.5200], [3.0468], [3.9853]]) tensor([[1.4700], [3.4388]], grad_fn=<MmBackward>) tensor([[1.5153], [3.6476]]) tensor([[4.5685], [2.0295], [3.5529], [1.5218]], grad_fn=<MmBackward>) tensor([[4.6717], [2.3835], [3.6476], [1.5153]]) tensor([[0.0093], [4.3047], [2.6939], [3.2308]], grad_fn=<MmBackward>) tensor([[0.1019], [3.9853], [3.0468], [2.5200]]) tensor([[0.4853], [0.9729]], grad_fn=<MmBackward>) tensor([[0.3657], [0.7600]]) tensor([[-0.0090], [ 3.3673], [ 4.3319], [ 2.4026]], grad_fn=<MmBackward>) tensor([[0.1019], [3.6476], [4.6717], [3.0468]]) tensor([[3.3945], [2.2691], [1.7065], [1.1438]], grad_fn=<MmBackward>) tensor([[2.5200], [2.3835], [1.5153], [0.7600]]) tensor([[4.0150], [0.4947]], grad_fn=<MmBackward>) tensor([[3.9853], [0.3657]]) tensor([[1.9859], [4.4826], [2.4853], [2.9846]], grad_fn=<MmBackward>) tensor([[2.3835], [4.6717], [3.0468], [2.5200]]) tensor([[1.0655], [1.5971], [3.7236], [4.2553]], grad_fn=<MmBackward>) tensor([[0.7600], [1.5153], [3.6476], [3.9853]]) tensor([[-0.0124], [ 0.4846]], grad_fn=<MmBackward>) tensor([[0.1019], [0.3657]]) tensor([[2.4669], [3.9545], [1.9710], [0.9793]], grad_fn=<MmBackward>) tensor([[3.0468], [3.9853], [2.3835], [0.7600]]) tensor([[0.0036], [0.5419], [3.2337], [1.6187]], grad_fn=<MmBackward>) tensor([[0.1019], [0.3657], [2.5200], [1.5153]]) tensor([[3.4288], [4.4125]], grad_fn=<MmBackward>) tensor([[3.6476], [4.6717]]) tensor([[ 4.7611], [-0.0047], [ 3.1725], [ 1.0543]], grad_fn=<MmBackward>) tensor([[4.6717], [0.1019], [2.5200], [0.7600]]) tensor([[3.7990], [2.3657], [1.8879], [1.4101]], grad_fn=<MmBackward>) tensor([[3.9853], [3.0468], [2.3835], [1.5153]]) tensor([[0.5540], [3.8415]], grad_fn=<MmBackward>) tensor([[0.3657], [3.6476]]) tensor([[2.6627], [1.0641], [0.5312], [1.5970]], grad_fn=<MmBackward>) tensor([[3.0468], [0.7600], [0.3657], [1.5153]]) tensor([[ 4.3283], [ 2.1616], [-0.0050], [ 3.7866]], grad_fn=<MmBackward>) tensor([[3.9853], [2.3835], [0.1019], [3.6476]]) tensor([[4.6187], [3.0764]], grad_fn=<MmBackward>) tensor([[4.6717], [2.5200]]) Epoch = 90 tensor([[ 2.4129], [ 2.8990], [ 0.9543], [-0.0181]], grad_fn=<MmBackward>) tensor([[3.0468], [2.5200], [0.7600], [0.1019]]) Batch = 0, Error = 0.5977063179016113 tensor([[1.9500], [0.4767], [4.4057], [1.4589]], grad_fn=<MmBackward>) tensor([[2.3835], [0.3657], [4.6717], [1.5153]]) Batch = 1, Error = 0.27414506673812866 tensor([[4.2539], [3.7220]], grad_fn=<MmBackward>) tensor([[3.9853], [3.6476]]) Batch = 2, Error = 0.07766690850257874 tensor([[4.0389], [1.0034], [3.5330], [0.4975]], grad_fn=<MmBackward>) tensor([[3.9853], [0.7600], [3.6476], [0.3657]]) tensor([[ 4.5171], [ 2.5029], [ 3.0065], [-0.0147]], grad_fn=<MmBackward>) tensor([[4.6717], [3.0468], [2.5200], [0.1019]]) tensor([[2.0525], [1.5373]], grad_fn=<MmBackward>) tensor([[2.3835], [1.5153]]) tensor([[1.5803], [4.2174], [2.1077], [3.1625]], grad_fn=<MmBackward>) tensor([[1.5153], [3.9853], [2.3835], [2.5200]]) tensor([[-0.0152], [ 0.9459], [ 2.3877], [ 4.3101]], grad_fn=<MmBackward>) tensor([[0.1019], [0.7600], [3.0468], [4.6717]]) tensor([[3.7895], [0.5446]], grad_fn=<MmBackward>) tensor([[3.6476], [0.3657]]) tensor([[4.7619], [0.5268], [4.2325], [1.5856]], grad_fn=<MmBackward>) tensor([[4.6717], [0.3657], [3.9853], [1.5153]]) tensor([[ 1.9803], [ 2.9775], [ 0.9832], [-0.0140]], grad_fn=<MmBackward>) tensor([[2.3835], [2.5200], [0.7600], [0.1019]]) tensor([[2.3987], [3.3651]], grad_fn=<MmBackward>) tensor([[3.0468], [3.6476]]) tensor([[0.5354], [4.8079], [1.0695], [0.0014]], grad_fn=<MmBackward>) tensor([[0.3657], [4.6717], [0.7600], [0.1019]]) tensor([[4.1065], [2.0488], [1.5344], [3.0776]], grad_fn=<MmBackward>) tensor([[3.9853], [2.3835], [1.5153], [2.5200]]) tensor([[2.4081], [3.3778]], grad_fn=<MmBackward>) tensor([[3.0468], [3.6476]]) tensor([[1.6052], [2.1396], [4.2771], [3.2084]], grad_fn=<MmBackward>) tensor([[1.5153], [2.3835], [3.9853], [2.5200]]) tensor([[ 0.4637], [ 4.2898], [-0.0145], [ 2.3768]], grad_fn=<MmBackward>) tensor([[0.3657], [4.6717], [0.1019], [3.0468]]) tensor([[3.8112], [1.0938]], grad_fn=<MmBackward>) tensor([[3.6476], [0.7600]]) tensor([[3.6775], [2.1001], [2.6259], [1.0485]], grad_fn=<MmBackward>) tensor([[3.6476], [2.3835], [3.0468], [0.7600]]) tensor([[0.5543], [1.6537], [0.0046], [3.3028]], grad_fn=<MmBackward>) tensor([[0.3657], [1.5153], [0.1019], [2.5200]]) tensor([[4.4666], [3.9686]], grad_fn=<MmBackward>) tensor([[4.6717], [3.9853]]) tensor([[0.5062], [3.0928], [1.5408], [2.0581]], grad_fn=<MmBackward>) tensor([[0.3657], [2.5200], [1.5153], [2.3835]]) tensor([[0.9694], [4.4301], [3.9357], [3.4413]], grad_fn=<MmBackward>) tensor([[0.7600], [4.6717], [3.9853], [3.6476]]) tensor([[ 2.6336], [-0.0137]], grad_fn=<MmBackward>) tensor([[3.0468], [0.1019]]) tensor([[ 0.5465], [ 2.7449], [ 2.1953], [-0.0031]], grad_fn=<MmBackward>) tensor([[0.3657], [3.0468], [2.3835], [0.1019]]) tensor([[1.7148], [5.1342], [3.9944], [3.4245]], grad_fn=<MmBackward>) tensor([[1.5153], [4.6717], [3.6476], [2.5200]]) tensor([[3.5423], [0.8608]], grad_fn=<MmBackward>) tensor([[3.9853], [0.7600]]) tensor([[0.9328], [2.3713], [0.4533], [2.8508]], grad_fn=<MmBackward>) tensor([[0.7600], [3.0468], [0.3657], [2.5200]]) tensor([[ 1.4420], [ 1.9309], [-0.0245], [ 3.3975]], grad_fn=<MmBackward>) tensor([[1.5153], [2.3835], [0.1019], [3.6476]]) tensor([[4.1992], [4.7250]], grad_fn=<MmBackward>) tensor([[3.9853], [4.6717]])
#from torch.autograd.variable import Variable
x_for_plotting = np.linspace(0, 2*np.pi, 1000)
design_matrix = torch.tensor(np.vstack([np.ones(x_for_plotting.shape), x_for_plotting]).T, dtype=torch.float32)
#print('Design matrix:\n', design_matrix)
print('Design matrix shape:', design_matrix.shape)
y_for_plotting = model.forward(design_matrix)
print('y_for_plotting shape:', y_for_plotting.shape)
Design matrix shape: torch.Size([1000, 2]) y_for_plotting shape: torch.Size([1000, 1])
plt.figure()
plt.plot(x,y,'o')
plt.plot(x_for_plotting, y_for_plotting.data.numpy(), 'r-')
plt.xlabel('x')
plt.ylabel('y')
plt.title('2D data (#data = %d)' % N)
plt.show()