pytorch 学习记录——计算图

发布时间 2023-12-01 17:12:17作者: Mju_halcyon

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是否为叶子节点:用户创建时,使用的函数用到了不是变量的参数?则为叶子节点;

  • 从非叶子节点创建的节点均为非叶子节点;
  • 非叶子节点的梯度在反向传播之后默认不保留,如果需要则要在反向传播前调用.retain_grad();
  • 对于属于是向量的张量不能直接反向传播,需要传入一个shape和该向量一样的全填1的标量作为参数,根据雅克布矩阵的分解就会恰好得到各个维度的梯度值(注意,例如,如果这个张量是对某个张量求全体平均数.mean()操作后得到的,则shape为torch.Size([]),就变成了标量、可以反向传播);

4. oth