繁体   English   中英

将一个张量的值添加到另一个而不影响图形

[英]Add values of one tensor to another without affecting the graph

我只是想将tensor2的第三维的前三个值添加到tensor1,而不影响反向传播时的图形。 Tensor2 只需要它的值,它不应该是图表的一部分。

这行得通吗? 这就是我在 numpy 中的做法。

tensor1[:, :, :3] += tensor2[:, :, :3]

我应该更好地使用 torch.add() 还是 use.data? 我对何时使用什么感到困惑。 谢谢。

您应该能够使用detatch()返回带有requires_grad = False的张量 ( tensor2 ) 的副本。 使用 inplace += 运算符会在反向传播过程中导致错误(即在前向传播过程中的不同时间,同一个变量存储了 2 个不同的值和 2 个不同的相关梯度,但在向后传播过程中只有一组值/梯度存储在该变量中.) 对于作为计算图一部分的变量是否允许就地操作但当操作本身不允许时,我有点模糊。 您可以对此进行测试以查看,但为了安全起见,我建议:

tensor1[:,:,:3] =  torch.add(tensor1[:,:,:3],tensor2[:,:,:3].detach())

稍后,如果您想使用 tensor2 执行另一个操作,其中梯度是计算图的一部分,您仍然可以这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM