You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于仅能在forward()中调用的PyTorch方法的疑问

PyTorch中torch.autograd.Function.forward()专属实用方法说明

在PyTorch的torch.autograd.Function类中,仅能在forward()方法内部调用的实用方法/属性主要有这些:

  • self.save_for_backward(*tensors):用于保存反向传播过程中需要用到的张量,调用后这些张量会被存储,在backward()中可通过self.saved_tensors获取。只能在forward阶段调用,反向阶段调用会触发错误。
  • self.mark_non_differentiable(*outputs):标记指定的输出张量不需要计算梯度,告知autograd无需为这些张量构建反向传播的计算图分支。
  • self.set_materialize_grads(materialize):控制反向传播时是否实例化梯度张量。设为False时,autograd会跳过梯度张量的实例化操作,可在不需要梯度的场景下节省内存开销。
  • self.needs_input_grad:这是一个只读属性,返回一个布尔元组,对应每个输入张量是否需要计算梯度。在forward中可以根据这个属性做条件分支处理,比如只对需要梯度的输入执行特定逻辑。

这些方法/属性都是和autograd的计算图构建、反向传播准备逻辑深度绑定的,因此仅允许在forward()内部调用。

内容的提问来源于stack exchange,提问作者Eric Auld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:32:33