欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch中permute()函數(shù)用法實(shí)例詳解

 更新時(shí)間:2022年04月27日 10:50:55   作者:ac不知深  
permute中參數(shù)為張量的維度,將不同維度以不同的維度排列,得到一個(gè)新的張量,在深度學(xué)習(xí)中的主要作用是將特征值聚類,下面這篇文章主要給大家介紹了關(guān)于pytorch中permute()函數(shù)用法的相關(guān)資料,需要的朋友可以參考下

前言

本文只討論二維三維中的permute用法

最近的Attention學(xué)習(xí)中的一個(gè)permute函數(shù)讓我不理解

這個(gè)光說太抽象

我就結(jié)合代碼與圖片解釋一下

首先創(chuàng)建一個(gè)三維數(shù)組小實(shí)例

import torch

x = torch.linspace(1, 30, steps=30).view(3,2,5)     # 設(shè)置一個(gè)三維數(shù)組
print(x)
print(x.size())				# 查看數(shù)組的維數(shù)

這里為了防止出現(xiàn)維數(shù)數(shù)值相同的巧合局面(例如三維數(shù)組(3,3,3)或者(2,4,4)等)

輸出結(jié)果如下圖

一般的把(3,2,5)解釋為3維2行5列這里很容易讓人迷迷糊糊

那么我們按照塊,行,列理解起來會(huì)更容易一些

比如(3,2,5),表示3塊 2*5的數(shù)組

以下我簡(jiǎn)單用3塊3*3圖偷懶舉例

然后堆起來就是我們熟知的三維矩陣

接下來先簡(jiǎn)單介紹下permute()函數(shù)

permute(dims)
參數(shù)dims用矩陣的維數(shù)代入,一般默認(rèn)從0開始。即第0維,第1維等等
也可以理解為,第0塊,第1塊等等。當(dāng)然矩陣最少是兩維才能使用permute
如是兩維,dims分別為是0和1
可以寫成permute(0,1)這里不做任何變化,維數(shù)與之前相同
如果寫成permute(1,0)得到的就是矩陣的轉(zhuǎn)置
如果三維是permute(0,1,2)
0代表共有幾塊維度:本例中0對(duì)應(yīng)著3塊矩陣
1代表每一塊中有多少行:本例中1對(duì)應(yīng)著每塊有2行
2代表每一塊中有多少列:本例中2對(duì)應(yīng)著每塊有5列
所以是3塊2行5列的三維矩陣
這些0,1,2并沒有任何實(shí)際的意義,也不是數(shù)值,只是用來標(biāo)識(shí)區(qū)別。有點(diǎn)類似于x,y,z來區(qū)分三個(gè)坐標(biāo)維度,是人為規(guī)定好的
三維情況直接用下面的代碼來給大家講解

三維情況

變化一:不改變?nèi)魏螀?shù)

b = x.permute(0,1,2)            # 不改變維度
print(b)
print(b.size())

發(fā)現(xiàn)此時(shí)矩陣沒有變化,依然是按照之前的方式排列

變化二:1與2交換

b = x.permute(0,2,1)             # 每一塊的行與列進(jìn)行交換,即每一塊做轉(zhuǎn)置行為
print(b)
print(b.size())

兩張圖片可以比較

在不改變每一塊(即)的前提下,對(duì)每一塊的行列進(jìn)行對(duì)調(diào)(即二維矩陣的轉(zhuǎn)置)

變化三:0與1交換

b = x.permute(1,0,2)            # 交換塊和行
print(b)
print(b.size())

兩者比較可以看出塊數(shù)和每塊的行數(shù)發(fā)生了變化

即參數(shù)0對(duì)應(yīng)的數(shù)值3塊變成2塊

參數(shù)1對(duì)應(yīng)的2行變成3行

這個(gè)變化剛好是0與1 的位置交換,導(dǎo)致參數(shù)進(jìn)行對(duì)調(diào)

此時(shí)變成了2塊 * 3行 * 5列(初始為3塊 * 2行 *5列)

變化四:0與2交換

b = x.permute(2,1,0)            # 交換塊和列
print(b)
print(b.size())

此時(shí)參數(shù)0對(duì)應(yīng)的3塊經(jīng)過permute已經(jīng)變成了5塊

參數(shù)2對(duì)應(yīng)的5列已經(jīng)變成了3列

變化五:0與1交換,1與2交換

b = x.permute(2,0,1)            # 交換塊和行和列
print(b)
print(b.size())

此時(shí)參數(shù)0對(duì)應(yīng)的3塊變成了5塊

參數(shù)1對(duì)應(yīng)的2行變成了3行

參數(shù)2對(duì)應(yīng)的5列變成了2列

變化六:0與1交換,0與2交換

b = x.permute(1,2,0)            # 交換塊和行和列
print(b)
print(b.size())

此時(shí)參數(shù)0對(duì)應(yīng)的3塊變成了2塊

參數(shù)1對(duì)應(yīng)的2行變成了5行

參數(shù)2對(duì)應(yīng)的5列變成了3列

總結(jié)

根據(jù)以上舉得二維和三維例子可以知道permute()函數(shù)其實(shí)是對(duì)矩陣的塊行列進(jìn)行交換

里面的參數(shù)并不是具體數(shù)值

而是塊行列的代指

寫在最后

沒想隨手寫的一篇居然這么多讀者關(guān)注

我又在此篇文章的基礎(chǔ)上,詳細(xì)的解釋了維度變化過程

能夠更好的幫助大家理解permute函數(shù)的用法

進(jìn)階文章請(qǐng)戳我

到此這篇關(guān)于pytorch中permute()函數(shù)用法的文章就介紹到這了,更多相關(guān)pytorch permute()函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python框架Flask的基本數(shù)據(jù)庫操作方法分析

    Python框架Flask的基本數(shù)據(jù)庫操作方法分析

    這篇文章主要介紹了Python框架Flask的基本數(shù)據(jù)庫操作方法,結(jié)合實(shí)例形式分析了Flask框架數(shù)據(jù)庫操作常用函數(shù)功能、用法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Python Dask庫處理大規(guī)模數(shù)據(jù)集的強(qiáng)大功能實(shí)戰(zhàn)

    Python Dask庫處理大規(guī)模數(shù)據(jù)集的強(qiáng)大功能實(shí)戰(zhàn)

    Dask是一個(gè)靈活、開源的Python庫,專為處理大規(guī)模數(shù)據(jù)集而設(shè)計(jì),與傳統(tǒng)的單機(jī)計(jì)算相比,Dask能夠在分布式系統(tǒng)上運(yùn)行,有效利用集群的計(jì)算資源,本文將深入介紹Dask的核心概念、功能和實(shí)際應(yīng)用,通過豐富的示例代碼展示其在大數(shù)據(jù)處理領(lǐng)域的強(qiáng)大能力
    2023-12-12
  • Python編碼爬坑指南(必看)

    Python編碼爬坑指南(必看)

    下面小編就為大家?guī)硪黄狿ython編碼爬坑指南(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe

    解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe

    今天在使用conda創(chuàng)建環(huán)境之后,使用pycham發(fā)現(xiàn)找到自己的python環(huán)境但是找不到環(huán)境對(duì)應(yīng)的python.exe,這篇文章主要給大家介紹了關(guān)于如何解決使用Pycharm導(dǎo)入conda?environment時(shí)找不到python.exe的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • python標(biāo)記語句塊使用方法總結(jié)

    python標(biāo)記語句塊使用方法總結(jié)

    在本篇文章里小編給大家整理了關(guān)于python標(biāo)記語句塊使用方法以及相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2019-08-08
  • python 列表降維的實(shí)例講解

    python 列表降維的實(shí)例講解

    今天小編就為大家分享一篇python 列表降維的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python中的bisect模塊與二分查找詳情

    python中的bisect模塊與二分查找詳情

    這篇文章主要介紹了python中的bisect模塊與二分查找詳情,bisect是python的內(nèi)置模塊,?用于有序序列的插入和查找。?插入的數(shù)據(jù)不會(huì)影響列表的排序,更多詳細(xì)內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • python 如何獲取元素在array中的下標(biāo)

    python 如何獲取元素在array中的下標(biāo)

    這篇文章主要介紹了python 獲取元素在array中的下標(biāo)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python3數(shù)據(jù)庫操作包pymysql的操作方法

    Python3數(shù)據(jù)庫操作包pymysql的操作方法

    這篇文章主要介紹了Python3數(shù)據(jù)庫操作包pymysql的操作方法,文章通過實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • python實(shí)現(xiàn)logistic分類算法代碼

    python實(shí)現(xiàn)logistic分類算法代碼

    今天小編就為大家分享一篇python實(shí)現(xiàn)logistic分類算法代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評(píng)論