首先需要知道梯度,梯度下降等相关概念,这里传送门:https://www.jianshu.com/p/17191c57d7e9
import torch
def test():
"""
requires_grad表示是否对该tensor进行求导,默认为False;
设置为True则需要求导,并且依赖于该Tensor的之后的所有节点都需要求导。
其中:
grad:该tensor对应的梯度,类型为Tensor,并与tensor同纬度
grad_fn:只想funciton对象,即该Tensor经过了什么样的操作,用作反向传递的梯度计算;
如果该tensor由用户自己创建,则该grad_fn为None
"""
a = torch.randn(2, 2, requires_grad=True)
b = torch.randn(2, 2)
c = a + b
print("a:\n", a)
print(b.requires_grad)
# 因为a,b是自己创建的,而c是一个add函数操作
print("查看grad_fn:", a.grad_fn, b.grad_fn, c.grad_fn)
d = c.detach() # 用来获取数据,其生成的数据默认requires_grad为False
print("d(a + b ):", d)
# z = wx + b
def function():
# 生成三个Tensor变量,作为叶节点
x = torch.randn(1)
W = torch.ones(1, re