這個警告信息是提示在構(gòu)造新的張量時,推薦使用?sourceTensor.clone().detach()
?或?sourceTensor.clone().detach().requires_grad_(True)
,而不是使用?torch.tensor(sourceTensor)
?的方式。
警告信息提到了這個建議,是因為在 PyTorch 中,torch.tensor()
?函數(shù)都會創(chuàng)建新的張量,并且不與原先的張量共享內(nèi)存,即使輸入的是一個已有的 PyTorch 張量。如果原先的張量是一個反向傳播計算圖的一部分,使用?torch.tensor()
?函數(shù)會破壞計算圖中張量的歷史信息,使原來的張量和新創(chuàng)建的張量不再共享梯度和計算歷史。因此,如果想要創(chuàng)建一個新的張量,最好使用?tensor.clone().detach()
?或者?tensor.detach().clone()
,這樣可以安全地復(fù)制一個共享計算歷史的張量。
具體來說,如果想要從?a
?中創(chuàng)建一個新的張量?b
,并以這個新張量作為當(dāng)前計算圖的一部分,應(yīng)該使用如下方式:
b = a.clone().detach() # 或者 b = a.detach().clone()
代替文章來源:http://www.zghlxwxcb.cn/news/detail-604997.html
b = torch.tensor(a)
這樣生成的張量?b
?具有相同的形狀和值,但是它不再共享梯度和計算歷史,可以安全地用于其他操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-604997.html
到了這里,關(guān)于警告UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!