一、正向传播过程
二、方向传播更新梯度的过程
三、例子说明
线性模型:=x*w
残差项r=
四、代码实现
一个Tensor由Data (W)和Grad()组成。
import torch
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]
w=torch.Tensor([1.0])
w.requires_grad=True
def forward(x):
return x*w
def loss(x,y):
y_pred=forward(x)
return (y_pred-y)**2
print("predict(before training)",4,forward(4).item())
for epoch in range(100):
for x,y in zip(x_data,y_data):
l=loss(x,y) #l为张量
l.backward() #计算所有的梯度。释放计算图
print('\tgrad:',x,y,w.grad.item())
w.data=w.data-0.01*w.grad.data #w里的grad里为一个tensor
w.grad.data.zero_()
print("progress:",epoch,l.item())
print("predict(after training)",4,forward(4).item())
五、运行结果