最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pytorch獲取無梯度TorchTensor中的值

 更新時間:2021年05月22日 08:59:23   作者:_Epsilon_  
這篇文章主要介紹了Pytorch獲取無梯度TorchTensor中的值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

獲取無梯度Tensor

遇到的問題:

使用兩個網(wǎng)絡(luò)并行運算,一個網(wǎng)絡(luò)的輸出值要給另一個網(wǎng)絡(luò)反饋。而反饋的輸出值帶有網(wǎng)絡(luò)權(quán)重的梯度,即grad_fn=<XXXBackward0>.

這時候如果把反饋值扔到第二網(wǎng)絡(luò)中更新,會出現(xiàn)第一個計算圖丟失無法更新的錯誤。哎喲喂,我根本不需要第一個網(wǎng)絡(luò)的梯度好嗎?

一開始用了一個笨辦法,先轉(zhuǎn)numpy,然后再轉(zhuǎn)回torch.Tensor。因為numpy數(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上,坑爹呢這是,可能只有我才能寫出如此低效的辣雞代碼了。

后來發(fā)現(xiàn),其實直接在返回的時候添加

with torch.no_grad():
 td_error = reward + GAMMA * v_ - v

即可.

補充:在pytorch中取一個tensor的均值,然后該張量中的所有值與其對比!

Pytorch中的Tensor的shape是(B, C, W, H),

對該tensor取均值并與所有值做對比代碼如下:

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

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

滦平县| 承德县| 都兰县| 台南市| 白河县| 灵寿县| 曲靖市| 奉新县| 固始县| 梧州市| 德格县| 白玉县| 利辛县| 塔河县| 通河县| 乌海市| 锡林浩特市| 鄂托克前旗| 云南省| 建瓯市| 芒康县| 长沙县| 齐齐哈尔市| 虹口区| 浑源县| 五峰| 永城市| 高邮市| 南昌市| 隆昌县| 楚雄市| 都江堰市| 保康县| 昆山市| 宿州市| 九龙县| 略阳县| 鹿邑县| 宁河县| 南平市| 武城县|