用到了tensor
前向传播、计算loss
import torch
import matplotlib.pyplot as plt
x_data = [1, 2, 3]
y_data = [2, 4, 6]
def forward(x):
return x * w
def loss(x, y):
y_pre = forward(x)
return (y_pre - y) ** 2
w = torch.tensor([1.0],requires_grad=True)
l_list=[]
for epoch in range(100):
sum=0
for x, y in zip(x_data, y_data):
l = loss(x, y)
l.backward()
print("\tw=", w.grad.item(),"\n")
w.data -= 0.01 * w.grad.data
w.grad.data.zero_()
sum+= l.item()
print("loss=",sum/len(x_data),"\n")
l_list.append(sum)
print("predict (after training)", 4, forward(4).item())
plt.plot(range(100),l_list)
plt.show()