簡體   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