<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
tensor.permute(dims)
將tensor的維度換位。引數是一系列的整數,代表原來張量的維度。比如三維就有0,1,2這些dimension。
import torch a = torch.rand(8,256,256,3) #---> n,h,w,c print(a.shape) b = a.permute(0,3,1,2) # ---> n,c,h,w print(b.shape) #輸出 torch.Size([8, 256, 256, 3]) torch.Size([8, 3, 256, 256])
numpy內進行維度順序變換採用_numy.transpose(a,axis=None)_
引數 a: 輸入陣列
axis: int型別的列表,這個引數是可選的。預設情況下,反轉的輸入陣列的維度,當給定這個引數時,按照這個引數所定的值進行陣列變換。
返回值 p: ndarray 返回轉置過後的原陣列的檢視。
import numpy as ?np ? x = np.random.randn(8,256,256,3) ?# ---> n,h,w,c print(x.shape) y=x.transpose((0,3,1,2)) ? # ?----> n,c,h,w print(y.shape) #輸出 (8, 256, 256, 3) (8, 3, 256, 256)
二維矩陣乘法torch.mm()
torch.mm(mat1,mat2,out=None),其中mat1(NXM),mat2(MXD),輸出out的維度為(NXD)
該函數一般只用來計算兩個二維矩陣的矩陣乘法,並且不支援broadcast操作。
三維帶batch的矩陣乘法 torch.bmm()
由於神經網路訓練一般採用mini-batch,經常輸入的時三維帶batch的矩陣,所以提供torch.bmm(bmat1, bmat2, out=None),其中bmat1(b×n×mb×n×m),bmat2(b×m×db×m×d),輸出out的維度是(b×n×db×n×d)。
該函數的兩個輸入必須是三維矩陣且第一維相同(表示Batch維度),不支援broadcast操作。
多維矩陣乘法 torch.matmul()
torch.matmul(input, other, out=None)支援broadcast操作,使用起來比較複雜。
針對多維資料 matmul()乘法,我們可以認為該matmul()乘法使用使用兩個引數的後兩個維度來計算,其他的維度都可以認為是batch維度。假設兩個輸入的維度分別是input(1000×500×99×111000×500×99×11), other(500×11×99500×11×99)那麼我們可以認為torch.matmul(input, other, out=None)乘法首先是進行後兩位矩陣乘法得到(99×11)×(11×99)(99×99)(99×11)×(11×99)(99×99) ,然後分析兩個引數的batch size分別是 (1000×500)(1000×500) 和 500500 , 可以廣播成為 (1000×500)(1000×500), 因此最終輸出的維度是(1000×500×99×991000×500×99×99)。
矩陣逐元素(Element-wise)乘法 torch.mul()
torch.mul(mat1, other, out=None),其中other乘數可以是標量,也可以是任意維度的矩陣,只要滿足最終相乘是可以broadcast的即可
@ :矩陣乘法,自動執行適合的矩陣乘法函數
* :element-wise乘法
取對角線元素可以用torch.diagonal()
x = torch.randn(4,4) # tensor([[ 0.9148, 0.1396, -0.8974, 2.0014], # [ 0.1129, -0.3656, 0.4371, 0.2618], # [ 1.1049, -0.0774, -0.4160, -0.4922], # [ 1.3197, -0.2022, -0.0031, -1.3811]]) torch.diagonal(x) # tensor([ 0.9148, -0.3656, -0.4160, -1.3811])
非對角線元素沒有特定API,如果是求和,可以矩陣求和 減去對角線元素和 。
網上看到一個巧妙的非對角線元素方法
n, m = x.shape assert n == m x.flatten()[:-1].view(n-1,n+1)[:,1:].flatten() # tensor([ 0.1396, -0.8974, 2.0014, 0.1129, 0.4371, 0.2618, 1.1049, -0.0774, # -0.4922, 1.3197, -0.2022, -0.0031])
首先利用flatten()拉直向量,然後去掉最後一個元素,得到n^2 - 1個元素,然後構造為一個維度為[N-1, N+1]的矩陣。在這個矩陣中,之前所有的對角線元素全部出現在第1列,然後根據索引獲取[:, 1:]
元素,得到的就是原矩陣的非對角線元素。
到此這篇關於pytorch相關部分矩陣變換函數的文章就介紹到這了,更多相關pytorch矩陣變換函數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45