源自 PyTorch 1.4教程
Outline
Tensortorch.autograd.backward 若结果节点为标量若结果节点为矢量PyTorch中,所有神经网络的核心是 autograd 包
torch.Tensor 是这个autograd的核心类
一个张量Tensor通常记录的属性如下:
data:存储的数据信息requires_grad: 设置为True则表示该Tensor需要求导grad: 该Tensor的梯度值,每次在计算backward时都需要将前一时刻的梯度归零,否则梯度值会一直累加grad_fn: 叶子节点(即自变量)通常为None,只有结果节点(即因变量)的grad_fn才有效,用于指示梯度函数是哪种类型。is_leaf: 用来指示该Tensor是否是叶子节点。参见Pytorch autograd,backward详解
requires_grad=True 追踪对应张量的所有操作默认requires_grad为Flase a = torch.randn(2, 2) a = ((a * 3) / (a - 1)) print(a.requires_grad) a.requires_grad_(True) print(a.requires_grad) #输出 False True .detach() 方法 阻止张量被追踪调用 .detach() 方法将其与计算历史分离,并阻止它未来的计算记录被跟踪 with torch.no_grad(): 为了防止跟踪历史记录(和使用内存),可以将代码块包装在 with torch.no_grad(): 中 grad_fn 只有因变量有其属性 x=torch.tensor(1.0,requires_grad=True) y=torch.tensor(2.0,requires_grad=True) z=x+y print(x,y,z) #输出 tensor(1., requires_grad=True) tensor(2., requires_grad=True) tensor(3., grad_fn=<AddBackward0>)源代码接口
torch.autograd.backward( tensors, grad_tensors=None, retain_graph=None, create_graph=False) 参数含义 tensor: 用于计算梯度的tensor torch.autograd.backward(tensor) 与 tensor.backward()写法等价grad_tensors: 在计算矩阵的梯度时会用到。他其实也是一个tensor,shape一般需要和前面的tensor保持一致retain_graph: 通常在调用一次backward后,pytorch会自动把计算图销毁,所以要想对某个变量重复调用backward,则需要将该参数设置为Truecreate_graph: 当设置为True的时候可以用来计算更高阶的梯度在写的过程中发现tensor和Tensor原来是不一样的
torch.Tensor 默认的tensor类型(torch.FlaotTensor)的简称 torch.tensor 根据后面的data创建Tensor,Tensor类型根据数据进行推断。参见【PyTorch】Tensor和tensor的区别
下节写如何构建神经网络
欢迎批评指正,一起学习进步!!!