1. pytorch的计算图是动态更新的(tensorflow是静态计算图),数据流向可以是双向的。
2. pytorch variable(用于封装tensor,便于自动求导的变量类型,在pytorch0.4.0之后版本已被并入tensor)
基本属性:data,dtype,shape,device,requires_grad,is_leaf,grad,grad_fn
3. is_leaf是否为叶子节点:用户创建时,使用的函数用到了不是变量的参数?则为叶子节点;
- 从非叶子节点创建的节点均为非叶子节点;
- 创建叶子节点时,如果requires_grad设置为False,则叶子节点实际没有意义
- 非叶子节点的梯度在反向传播之后默认不保留,如果需要则要在反向传播前调用.retain_grad();
- 对于属于是向量的张量不能直接反向传播,需要传入一个shape和该向量一样的全填1的标量作为参数,根据雅克布矩阵的分解就会恰好得到各个维度的梯度值(注意,例如,如果这个张量是对某个张量求全体平均数.mean()操作后得到的,则shape为torch.Size([]),就变成了标量、可以反向传播);
4. oth
标签:叶子,记录,shape,学习,pytorch,反向,grad,节点 From: https://www.cnblogs.com/Song-Meow/p/17870517.html