import torch
import numpy as np
x_data = np.array([1.0,2.0,3.0])
y_data = x_data**2*5+x_data*5+7
w1 = torch.tensor([1.0])
w2 = torch.tensor([1.0])
b = torch.tensor([1.0])
w1.requires_grad = True
w2.requires_grad = True
b.requires_grad = True
def forward(x):
return x**2*w1+x*w2+b
def loss(x,y):
y_pred = forward(x)
return (y_pred-y)**2
print("before training:",4,forward(4))
for epoch in range(100):
for x,y in zip(x_data,y_data):
l = loss(x,y)
l.backward()
w1.data = w1.data - 0.01*w1.grad.data
w2.data = w2.data - 0.01*w2.grad.data
b.data = b.data - 0.01*b.grad.data
w1.grad.zero_()
w2.grad.zero_()
b.grad.zero_()
print("after training:",4,forward(4))