1、BP算法请自行学习
2、自动求梯度算法实现
import torch
w0 = torch.tensor([[2.00]], requires_grad=True)
x0 = torch.tensor([[-1.00]], requires_grad=True)
y0 = torch.mm(x0, w0)
w1 = torch.tensor([[-3.00]], requires_grad=True)
x1 = torch.tensor([[-2.00]], requires_grad=True)
y1 = w1.mm(x1)
w2 = torch.tensor([[-3.00]], requires_grad=True)
y2 = y0 + y1 + w2
y = torch.nn.Sigmoid()
s = y(y2)
s1 = s.sum()
s1.backward()
print(w0.grad)
print(x0.grad)
print(w1.grad)
print(x1.grad)
print(w2.grad)
print(s1*(1-s1))
实验结果:
tensor([[-0.1966]])
tensor([[0.3932]])
tensor([[-0.3932]])
tensor([[-0.5898]])
tensor([[0.1966]])
tensor(0.1966, grad_fn=<MulBackward0>)