Pytorch獲取無(wú)梯度TorchTensor中的值
獲取無(wú)梯度Tensor
遇到的問(wèn)題:
使用兩個(gè)網(wǎng)絡(luò)并行運(yùn)算,一個(gè)網(wǎng)絡(luò)的輸出值要給另一個(gè)網(wǎng)絡(luò)反饋。而反饋的輸出值帶有網(wǎng)絡(luò)權(quán)重的梯度,即grad_fn=<XXXBackward0>.
這時(shí)候如果把反饋值扔到第二網(wǎng)絡(luò)中更新,會(huì)出現(xiàn)第一個(gè)計(jì)算圖丟失無(wú)法更新的錯(cuò)誤。哎喲喂,我根本不需要第一個(gè)網(wǎng)絡(luò)的梯度好嗎?
一開(kāi)始用了一個(gè)笨辦法,先轉(zhuǎn)numpy,然后再轉(zhuǎn)回torch.Tensor。因?yàn)閚umpy數(shù)據(jù)是不帶梯度的。
但是我的原始tensor的放在cuda上的,
cuda的張量是不能直接轉(zhuǎn)Tensor,所以
t_error = td_error.cuda().data.cpu().numpy() t_error = torch.FloatTensor(t_error).to(device)
從cuda轉(zhuǎn)回了cpu,變成numpy,又轉(zhuǎn)成了tensor,又回到了cuda上,坑爹呢這是,可能只有我才能寫出如此低效的辣雞代碼了。
后來(lái)發(fā)現(xiàn),其實(shí)直接在返回的時(shí)候添加
with torch.no_grad(): td_error = reward + GAMMA * v_ - v
即可.
補(bǔ)充:在pytorch中取一個(gè)tensor的均值,然后該張量中的所有值與其對(duì)比!
Pytorch中的Tensor的shape是(B, C, W, H),
對(duì)該tensor取均值并與所有值做對(duì)比代碼如下:
C, H, W = tensor.shape[1], tensor.shape[2], tensor.shape[3] for c in range(C): mean = torch.mean(x[0][c]) for h in range(H): for w in range(W): if x[0][c][h][w] >= mean: x[0][c][h][w] = mean
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Feign高級(jí)應(yīng)用實(shí)例詳解
這篇文章主要介紹了Spring Cloud Feign高級(jí)應(yīng)用實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
python opencv檢測(cè)目標(biāo)顏色的實(shí)例講解
下面小編就為大家分享一篇python opencv檢測(cè)目標(biāo)顏色的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
利用Python實(shí)現(xiàn)自動(dòng)工作匯報(bào)的腳本分享
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)一個(gè)自動(dòng)工作匯報(bào)的腳本,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-08-08
用virtualenv建立多個(gè)Python獨(dú)立虛擬開(kāi)發(fā)環(huán)境
這篇文章主要為大家詳細(xì)介紹了用virtualenv建立多個(gè)Python獨(dú)立虛擬開(kāi)發(fā)環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
python+POP3實(shí)現(xiàn)批量下載郵件附件
這篇文章主要為大家詳細(xì)介紹了python+POP3實(shí)現(xiàn)批量下載郵件附件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法
這篇文章主要介紹了Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法,需要的朋友可以參考下2019-07-07
Pandas數(shù)據(jù)形狀df.shape的實(shí)現(xiàn)
本文主要介紹了Pandas數(shù)據(jù)形狀df.shape的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

