1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Pytorch中的5個(gè)非常有用的張量操作

        共 3614字,需瀏覽 8分鐘

         ·

        2021-06-03 17:42

        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        本文轉(zhuǎn)自:AI公園

        導(dǎo)讀

        雖然也有其他方式可以實(shí)現(xiàn)相同的效果,但是這幾個(gè)操作可以讓使用更加方便。


        PyTorch是一個(gè)基于Python的科學(xué)包,用于使用一種稱為張量的特殊數(shù)據(jù)類型執(zhí)行高級(jí)操作。張量是具有規(guī)則形狀和相同數(shù)據(jù)類型的數(shù)字、向量、矩陣或多維數(shù)組。PyTorch是NumPy包的另一種選擇,它可以在GPU下使用。它也被用作進(jìn)行深度學(xué)習(xí)研究的框架。

        這5個(gè)操作是:

        • expand()
        • permute()
        • tolist()
        • narrow()
        • where()
        1. expand()


        將現(xiàn)有張量沿著值為1的維度擴(kuò)展到新的維度。張量可以同時(shí)沿著任意一維或多維展開。如果你不想沿著一個(gè)特定的維度展開張量,你可以設(shè)置它的參數(shù)值為-1。

        注意:只能擴(kuò)展單個(gè)維度

        # Example 1 - working 
        a=torch.tensor([[[1,2,3],[4,5,6]]])
        a.size()
        >>torch.Size([123])

        a.expand(2,2,3)
        >>tensor([[[123],
                 [456]],

                [[123],
                 [456]]])

        在這個(gè)例子中,張量的原始維數(shù)是[1,2,3]。它被擴(kuò)展到[2,2,3]。

        2. permute()


        這個(gè)函數(shù)返回一個(gè)張量的視圖,原始張量的維數(shù)根據(jù)我們的選擇而改變。例如,如果原來的維數(shù)是[1,2,3],我們可以將它改為[3,2,1]。該函數(shù)以所需的維數(shù)順序作為參數(shù)。

        # Example 1 - working
        a=torch.tensor([[[1,2,3],[4,5,6]]])
        a.size()
        >>torch.Size([123])

        a.permute(2,1,0).size()
        >>torch.Size([321])

        a.permute(2,1,0)
        >>tensor([[[1],
                 [4]],

                [[2],
                 [5]],

                [[3],
                 [6]]])

        在這個(gè)例子中,原始張量的維度是[1,2,3]。使用permuting,我將順序設(shè)置為(2,1,0),這意味著新的維度應(yīng)該是[3,2,1]。如圖所示,張量的新視圖重新排列了數(shù)字,使得張量的維度為[3,2,1]。

        當(dāng)我們想要對(duì)不同維數(shù)的張量進(jìn)行重新排序,或者用不同階數(shù)的矩陣進(jìn)行矩陣乘法時(shí),可以使用這個(gè)函數(shù)。

        3. tolist()


        這個(gè)函數(shù)以Python數(shù)字、列表或嵌套列表的形式返回張量。在此之后,我們可以對(duì)它執(zhí)行任何python邏輯和操作。

        # Example 1 - working
        a=torch.tensor([[1,2,3],[4,5,6]])
        a.tolist()
        >> [[123], [456]]

        在這個(gè)例子中,張量以嵌套列表的形式返回。

        4. narrow()


        這個(gè)函數(shù)返回一個(gè)新的張量,這個(gè)張量是原來張量的縮小版。這個(gè)函數(shù)的參數(shù)是輸入張量、要縮小的維數(shù)、起始索引和新張量沿該維數(shù)的長(zhǎng)度。它返回從索引start到索引(start+length-1)中的元素。

        # Example 1 - working
        a=torch.tensor([[1,2,3,4],[5,6,7,8],[9,10,11,12],[14,15,16,17]])
        torch.narrow(a,1,2,2)
        >> tensor([[ 3,  4],
                [ 7,  8],
                [1112],
                [1617]])

        在這個(gè)例子中,張量要沿著第2維,也就是最里面的維度縮小。它接受列表中的元素,從索引2開始,到索引3(=2+2 -1,即start+length-1)。

        Narrow()的工作原理類似于高級(jí)索引。例如,在一個(gè)2D張量中,使用[:,0:5]選擇列0到5中的所有行。同樣的,可以使用torch.narrow(1,0,5)。然而,在高維張量中,對(duì)于每個(gè)維度都使用range操作是很麻煩的。使用narrow()可以更快更方便地實(shí)現(xiàn)這一點(diǎn)。

        5. where()


        這個(gè)函數(shù)返回一個(gè)新的張量,其值在每個(gè)索引處都根據(jù)給定條件改變。這個(gè)函數(shù)的參數(shù)有:條件,第一個(gè)張量和第二個(gè)張量。在每個(gè)張量的值上檢查條件(在條件中使用),如果為真,就用第一個(gè)張量中相同位置的值代替,如果為假,就用第二個(gè)張量中相同位置的值代替。

        # Example 1 - working
        a=torch.tensor([[[1,2,3],[4,5,6]]]).to(torch.float32)
        b=torch.zeros(1,2,3)
        torch.where(a%2==0,b,a)
        >>tensor([[[1.0.3.],
                 [0.5.0.]]])

        這里,它檢查張量a的值是否是偶數(shù)。如果是,則用張量b中的值替換,b中的值都是0,否則還是和原來一樣。

        此函數(shù)可用于設(shè)定閾值。如果張量中的值大于或小于某一數(shù)值,它們可以很容易地被替換。


        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 48
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            天天干夜夜操视频免费专区 | 日韩成人一级片 | 污污污www精品国产网站 | 自拍网站第一页 | 96国产精品视频 | 天海翼在丈夫面前被侵犯 | 亚洲春色奇米影视 | 国产51精品秘 在线观看 | 黄网站在线播放 | AV天天插|