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

PyTorch中初始化无原权重梯度历史关联的可微分参数的方法

解答

你给出的B = nn.Parameter(W.detach().clone())写法完全正确,同时这就是满足你需求的最简标准实现。

逻辑拆解

  • W.detach()会直接切断张量和原有计算图的关联,返回的张量不会携带任何和W相关的梯度历史,autograd自然不会追踪B到W的关联路径,符合你不希望梯度回传到W的要求。
  • .clone()会为新张量开辟完全独立的内存空间,B和W不存在任何内存共享或引用关系,后续你对B的任意修改、参数更新都不会影响到原有权重W。
  • 外层用nn.Parameter()包装后,会自动将张量的requires_grad属性设置为True,把B标记为模型的可训练参数,具备正常的可微分属性,后续前向传播产生的梯度只会正常更新到B本身。

注意

不要省略.clone()步骤,如果直接写nn.Parameter(W.detach()),B会和W共享同一块内存,不符合你要求的独立占用内存的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:42:01