PyTorch中 tensor.detach() 和 tensor.data 的區(qū)別詳解
PyTorch0.4中,.data 仍保留,但建議使用 .detach(), 區(qū)別在于 .data 返回和 x 的相同數(shù)據(jù) tensor, 但不會(huì)加入到x的計(jì)算歷史里,且require s_grad = False, 這樣有些時(shí)候是不安全的, 因?yàn)?x.data 不能被 autograd 追蹤求微分 。
.detach() 返回相同數(shù)據(jù)的 tensor ,且 requires_grad=False ,但能通過 in-place 操作報(bào)告給 autograd 在進(jìn)行反向傳播的時(shí)候.
舉例:
tensor.data
>>> a = torch.tensor([1,2,3.], requires_grad =True) >>> out = a.sigmoid() >>> c = out.data >>> c.zero_() tensor([ 0., 0., 0.]) >>> out # out的數(shù)值被c.zero_()修改 tensor([ 0., 0., 0.]) >>> out.sum().backward() # 反向傳播 >>> a.grad # 這個(gè)結(jié)果很嚴(yán)重的錯(cuò)誤,因?yàn)閛ut已經(jīng)改變了 tensor([ 0., 0., 0.])
tensor.detach()
>>> a = torch.tensor([1,2,3.], requires_grad =True) >>> out = a.sigmoid() >>> c = out.detach() >>> c.zero_() tensor([ 0., 0., 0.]) >>> out # out的值被c.zero_()修改 !! tensor([ 0., 0., 0.]) >>> out.sum().backward() # 需要原來out得值,但是已經(jīng)被c.zero_()覆蓋了,結(jié)果報(bào)錯(cuò) RuntimeError: one of the variables needed for gradient computation has been modified by an
以上這篇PyTorch中 tensor.detach() 和 tensor.data 的區(qū)別詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作
這篇文章主要介紹了torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作,文章內(nèi)容接受非常詳細(xì),對(duì)正在學(xué)習(xí)或工作的你有一定的幫助,需要的朋友可以參考一下2022-02-02表格梳理python內(nèi)置數(shù)學(xué)模塊math分析詳解
這篇文章主要為大家介紹了python內(nèi)置數(shù)學(xué)模塊math的分析詳解,文中通過表格梳理的方式以便讓大家在學(xué)習(xí)過程中一目望去清晰明了,有需要的朋友可以借鑒參考下2021-10-10用Python自動(dòng)清理電腦內(nèi)重復(fù)文件,只要10行代碼(自動(dòng)腳本)
這篇文章主要介紹了用Python自動(dòng)清理電腦內(nèi)重復(fù)文件,只要10行代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01python opencv實(shí)現(xiàn)切變換 不裁減圖片
這篇文章主要為大家詳細(xì)介紹了python opencv實(shí)現(xiàn)切變換,不裁減圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07面向?qū)ο髮W(xué)習(xí)之pygame坦克大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了面向?qū)ο髮W(xué)習(xí)之pygame坦克大戰(zhàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁(yè)面的實(shí)例代碼
這篇文章主要介紹了python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁(yè)面的實(shí)例代碼,需要的朋友可以參考下2018-05-05快速解決jupyter notebook啟動(dòng)需要密碼的問題
這篇文章主要介紹了快速解決jupyter notebook啟動(dòng)需要密碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04