pytorch--切断梯度的方法

文章目录

    • 方法
    • 验证
      • data属性 与 detach()函数
      • clone()函数验证
    • 参考资料

方法

  1. 调用tensor的data属性
  2. 调用tensor的detach()函数
  3. 调用clone()可行吗?不可行

验证

先写结论:.data 和.detach只取出本体tensor数据,舍弃了grad,grad_fn等额外反向图计算过程需保存的额外信息。但是.data所创建的tensor与原tensor的内存是共享的,也就是说改变二者任一变量,另一个变量的内容也会发生同样的改变。

data属性 与 detach()函数

pytorch--切断梯度的方法_第1张图片
进一步,当我调用.backward()时会发生错误:

  • .data:

    pytorch--切断梯度的方法_第2张图片

  • .detach()
    pytorch--切断梯度的方法_第3张图片

clone()函数验证

pytorch--切断梯度的方法_第4张图片
如上所示,clone()后的结果仍然requires_grad。所以并不能切断梯度

参考资料

  • pytorch.data属性和.detach属性相同与不同之处
  • 如何切断梯度的反向传播

你可能感兴趣的:(pytorch,pytorch)