日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从numpy掩码到pytorch掩码

發布時間:2024/3/13 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从numpy掩码到pytorch掩码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、numpy布爾索引掩碼

import numpy as npdata = np.arange(1, 11) mask=[True,False,True,False,True,False,True,False,True,False]print(data) print(data[mask])

返回值為:

[ 1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 10]
[1 3 5 7 9]

二、numpy掩碼數組

掩碼數組通過numpy.ma來創建。

所謂掩碼,就是掩蓋的意思,后續掩碼數組的操作只有未被掩藏的元素會參與計算。
掩碼數組賦予了我們重新選擇元素的權利,而不用改變矩陣的維度。

示例一:

import numpy as np import numpy.ma as maa = np.arange(5) b = ma.masked_array(a, mask=[1,1,1,0,0]) print(a) print(b)

返回值為:

[0 1 2 3 4]
[-- -- -- 3 4]

示例二:

import matplotlib.pyplot as pltdata = np.random.rand(25 * 25).reshape(25, -1) mask = np.tri(data.shape[0], k=-1) data_masked = ma.array(data, mask=mask)fig, (ax1, ax2) = plt.subplots(1, 2) ax1.imshow(data) ax2.imshow(data_masked) plt.show()

返回為:

三、pytorch掩碼

pytorch使用tensor.masked_fill將張量中的一些值掩蓋掉。

方法原型:tensor.masked_fill(mask, value)

注意點:

  • mask中為1的部分使用value替代,0的部分保持原值
  • mask必須是一個ByteTensor類型的張量(由01組成)
  • import torchx = torch.arange(24).reshape(3, 2, 4) print(x.shape) masked = torch.ByteTensor([[[1, 0, 1, 0], [0, 1, 1, 1]],[[1, 0, 1, 0], [0, 1, 1, 1]],[[1, 0, 1, 0], [0, 1, 1, 1]]]) print(masked.shape) x = x.masked_fill(masked, 1e9) print(x)

    ?返回為:

    torch.Size([3, 2, 4])
    torch.Size([3, 2, 4])
    tensor([[[1000000000, ? ? ? ? ?1, 1000000000, ? ? ? ? ?3],
    ? ? ? ? ?[ ? ? ? ? 4, 1000000000, 1000000000, 1000000000]],

    ? ? ? ? [[1000000000, ? ? ? ? ?9, 1000000000, ? ? ? ? 11],
    ? ? ? ? ?[ ? ? ? ?12, 1000000000, 1000000000, 1000000000]],

    ? ? ? ? [[1000000000, ? ? ? ? 17, 1000000000, ? ? ? ? 19],
    ? ? ? ? ?[ ? ? ? ?20, 1000000000, 1000000000, 1000000000]]])

    總結

    以上是生活随笔為你收集整理的从numpy掩码到pytorch掩码的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。