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

Pytorch獲取無梯度TorchTensor中的值

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

獲取無梯度Tensor

遇到的問題:

使用兩個網(wǎng)絡(luò)并行運(yùn)算,一個網(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

即可.

補(bǔ)充:在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)文章

最新評論

龙山县| 牡丹江市| 浠水县| 哈巴河县| 抚顺县| 博湖县| 南部县| 高阳县| 孟村| 墨竹工卡县| 乌兰县| 额济纳旗| 加查县| 赤水市| 根河市| 安龙县| 枣强县| 梓潼县| 苏州市| 阿拉尔市| 星子县| 甘洛县| 运城市| 濮阳市| 长白| 宽城| 比如县| 台安县| 揭西县| 高碑店市| 衡阳市| 萨嘎县| 崇信县| 西城区| 盐津县| 德江县| 湘潭县| 罗江县| 河池市| 隆昌县| 襄城县|