国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

pytorch 根據(jù)bool矩陣取出tensor中對應(yīng)位置元素

這篇具有很好參考價值的文章主要介紹了pytorch 根據(jù)bool矩陣取出tensor中對應(yīng)位置元素。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. bool矩陣當(dāng)做索引(類型是:BoolTensor)

結(jié)果為一維向量(因為bool矩陣二維的,根據(jù)bool矩陣中True對應(yīng)位置,把tensor數(shù)據(jù)中相應(yīng)位置中的值取出來,組成一個新的一維tensor向量)

#布爾索引  用布爾索引總是會返回一份新創(chuàng)建的數(shù)據(jù),原本的數(shù)據(jù)不會被改變。
a2 = np.arange(15).reshape(3,5)
print('a2===',a2)
mask = a2<5
b2 = a2[mask]
print('b2===',b2)
b2[0] = 17
print('a2===',a2) #修改b2中的數(shù)據(jù),會發(fā)現(xiàn)原數(shù)據(jù)a2中的值沒有發(fā)生改變。

輸出結(jié)果:

a2=== tensor([[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14]])
b2=== tensor([0, 1, 2, 3, 4])
a2=== tensor([[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14]])

2. 一維bool向量當(dāng)做索引(類型是:BoolTensor)

第一個例子:結(jié)果為一維向量(target是一維的)

target = torch.Tensor([1,0,0,2,0,0,3])
mask = (target > 0)
masked_target = target[mask]
 
print(target)
print(mask)
print(masked_target)

輸出結(jié)果如下:

tensor([1., 0., 0., 2., 0., 0., 3.])
tensor([ True, False, False,  True, False, False,  True])
tensor([1., 2., 3.])

第二個例子:結(jié)果為一個二維的向量(x是二維的)

x = torch.randn(4,3)
y = torch.tensor([True,False,False,True])
print('x===',x)
print('y===',y)
print('x[y]===',x[y])
print('y.sum()===',y.sum())

輸出結(jié)果:

x===tensor([[ 0.4563,  0.3963,  0.4101],
        [-0.4360, -0.2968,  1.0010],
        [ 0.2851,  0.0890,  0.5452],
        [ 0.8384, -1.1912,  0.2131]])
y===tensor([ True, False, False,  True])
x[y]===tensor([[ 0.4563,  0.3963,  0.4101],
        [ 0.8384, -1.1912,  0.2131]])
y.sum()===tensor(2)

3. torch.masked_select() 根據(jù)bool矩陣取出tensor中對應(yīng)位置元素(類型是:BoolTensor)。

torch.masked_select(input, mask, *, out=None) → Tensor

此方法中mask是一個bool矩陣,在input中取出mask中True對應(yīng)的值。
首先介紹參數(shù):

  • input(tensor):需要進行處理的tensor。
  • mask(BoolTensor):包含了二進制掩碼,要進行索引的tensor。
  • out:輸出的結(jié)果tensor(結(jié)果為一維tensor)。

使用方法如下:
第一個例子:

>>> x = torch.randn(3, 4)
>>> x
tensor([[ 0.3552, -2.3825, -0.8297,  0.3477],
        [-1.2035,  1.2252,  0.5002,  0.6248],
        [ 0.1307, -2.0608,  0.1244,  2.0139]])
>>> mask = x.ge(0.5)
>>> mask
tensor([[False, False, False, False],
        [False, True, True, True],
        [False, False, False, True]])
>>> torch.masked_select(x, mask)
tensor([ 1.2252,  0.5002,  0.6248,  2.0139])

第二個例子:

target = torch.Tensor([1,0,0,2,0,0,3])
mask = target.ge(0)
masked_target = torch.masked_select(target, mask)
 
print(target)
print(mask)
print(masked_target)

輸出結(jié)果為:

tensor([1., 0., 0., 2., 0., 0., 3.])
tensor([ True, False, False,  True, False, False,  True])
tensor([1., 2., 3.])

使用方法其實挺明顯的,就是把input與mask相對應(yīng)起來,取出mask中True所對應(yīng)位置的數(shù)據(jù),組成一維的tensor。

注意:mask和input的形狀可以不相同,但是它們必須是可以廣播的。并且返回tensor和原tensor使用不同的內(nèi)存,相互獨立。文章來源地址http://www.zghlxwxcb.cn/news/detail-409593.html

4. 參考鏈接

  1. Python基礎(chǔ) 切片索引、布爾索引、花式索引
  2. Pytorch中Tensor的索引,切片以及花式索引(fancy indexing)
  3. pytorch中bool類型的張量作為索引
  4. pytorch中幾種tensor掩碼的獲取方法(含代碼)
  5. pytorch每日一學(xué)35(torch.masked_select())根據(jù)bool矩陣取出tensor中對應(yīng)位置元素

到了這里,關(guān)于pytorch 根據(jù)bool矩陣取出tensor中對應(yīng)位置元素的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包