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

Pytorch 使用tensor特定條件判斷索引

 更新時(shí)間:2021年04月08日 16:43:30   作者:judgechen1997  
這篇文章主要介紹了Pytorch 使用tensor特定條件判斷索引的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

torch.where() 用于將兩個(gè)broadcastable的tensor組合成新的tensor,類似于c++中的三元操作符“?:”

區(qū)別于python numpy中的where()直接可以找到特定條件元素的index

想要實(shí)現(xiàn)numpy中where()的功能,可以借助nonzero()

對應(yīng)numpy中的where()操作效果:

補(bǔ)充:Pytorch torch.Tensor.detach()方法的用法及修改指定模塊權(quán)重的方法

detach

detach的中文意思是分離,官方解釋是返回一個(gè)新的Tensor,從當(dāng)前的計(jì)算圖中分離出來

需要注意的是,返回的Tensor和原Tensor共享相同的存儲(chǔ)空間,但是返回的 Tensor 永遠(yuǎn)不會(huì)需要梯度

import torch as t
a = t.ones(10,)
b = a.detach()
print(b)
tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

那么這個(gè)函數(shù)有什么作用?

–假如A網(wǎng)絡(luò)輸出了一個(gè)Tensor類型的變量a, a要作為輸入傳入到B網(wǎng)絡(luò)中,如果我想通過損失函數(shù)反向傳播修改B網(wǎng)絡(luò)的參數(shù),但是不想修改A網(wǎng)絡(luò)的參數(shù),這個(gè)時(shí)候就可以使用detcah()方法

a = A(input)
a = detach()
b = B(a)
loss = criterion(b, target)
loss.backward()

來看一個(gè)實(shí)際的例子:

import torch as t
x = t.ones(1, requires_grad=True)
x.requires_grad   #True
y = t.ones(1, requires_grad=True)
y.requires_grad   #True
x = x.detach()   #分離之后
x.requires_grad   #False
y = x+y         #tensor([2.])
y.requires_grad   #我還是True
y.retain_grad()   #y不是葉子張量,要加上這一行
z = t.pow(y, 2)
z.backward()    #反向傳播
y.grad        #tensor([4.])
x.grad        #None

以上代碼就說明了反向傳播到y(tǒng)就結(jié)束了,沒有到達(dá)x,所以x的grad屬性為None

既然談到了修改模型的權(quán)重問題,那么還有一種情況是:

–假如A網(wǎng)絡(luò)輸出了一個(gè)Tensor類型的變量a, a要作為輸入傳入到B網(wǎng)絡(luò)中,如果我想通過損失函數(shù)反向傳播修改A網(wǎng)絡(luò)的參數(shù),但是不想修改B網(wǎng)絡(luò)的參數(shù),這個(gè)時(shí)候又應(yīng)該怎么辦了?

這時(shí)可以使用Tensor.requires_grad屬性,只需要將requires_grad修改為False即可.

for param in B.parameters():
 param.requires_grad = False
a = A(input)
b = B(a)
loss = criterion(b, target)
loss.backward()

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

最新評論

岳西县| 长宁县| 贵州省| 漳州市| 潢川县| 瑞丽市| 张北县| 黄陵县| 依安县| 科尔| 天祝| 洪雅县| 蕉岭县| 新巴尔虎右旗| 安福县| 思茅市| 杂多县| 博野县| 高密市| 盐城市| 珲春市| 镇康县| 宝兴县| 湛江市| 庐江县| 门头沟区| 罗源县| 广宗县| 达日县| 桐柏县| 泰来县| 洞口县| 徐闻县| 襄城县| 兰州市| 西吉县| 五常市| 武清区| 乌鲁木齐县| 图木舒克市| 郑州市|