PyTorch中torch.matmul()函數常見用法總結
一、函數介紹
pytorch中兩個張量的乘法可以分為兩種:
- 兩個張量對應元素相乘,在PyTorch中可以通過torch.mul函數(或*運算符)實現;
- 兩個張量矩陣相乘,在PyTorch中可以通過torch.matmul函數實現;
torch.matmul(input, other) → Tensor
計算兩個張量input和other的矩陣乘積
【注意】:matmul函數沒有強制規(guī)定維度和大小,可以用利用廣播機制進行不同維度的相乘操作。
二、常見用法
torch.matmul()也是一種類似于矩陣相乘操作的tensor連乘操作。但是它可以利用python中的廣播機制,處理一些維度不同的tensor結構進行相乘操作。這也是該函數與torch.bmm()區(qū)別所在。
2.1 兩個一維向量的乘積運算
若兩個tensor都是一維的,則返回兩個向量的點積運算結果:
import torch x = torch.tensor([1,2]) y = torch.tensor([3,4]) print(x,y) print(torch.matmul(x,y),torch.matmul(x,y).size())
運行結果:
tensor([1, 2]) tensor([3, 4])
tensor(11) torch.Size([])
2.2 兩個二維矩陣的乘積運算
若兩個tensor都是二維的,則返回兩個矩陣的矩陣相乘結果:
import torch x = torch.tensor([[1,2],[3,4]]) y = torch.tensor([[5,6,7],[8,9,10]]) print(torch.matmul(x,y),torch.matmul(x,y).size())
運行結果:
tensor([[21, 24, 27],[47, 54, 61]]) torch.Size([2, 3])
2.3 一個一維向量和一個二維矩陣的乘積運算
若input為一維,other為二維,則先將input的一維向量擴充到二維(維數前面插入長度為1的新維度),然后進行矩陣乘積,得到結果后再將此維度去掉,得到的與input的維度相同。
import torch x = torch.tensor([1,2]) y = torch.tensor([[5,6,7],[8,9,10]]) print(torch.matmul(x,y),torch.matmul(x,y).size())
運行結果:
tensor([21, 24, 27]) torch.Size([3])
【分析】:首先將x維度從(2)擴充為(,2),然后將x(,2) 與y(2,3)進行相乘,得到(,3),最后去掉一維部分,得到(3)
2.4 一個二維矩陣和一個一維向量的乘積運算
若input為二維,other為一維,則先將other的一維向量擴充到二維(維數后面插入長度為1的新維度),然后進行矩陣乘積,得到結果后再將此維度去掉,得到的與other的維度相同。
import torch x = torch.tensor([[1,2,3],[4,5,6]]) y = torch.tensor([7,8,9]) print(torch.matmul(x,y),'\n',torch.matmul(x,y).size())
運行結果:
tensor([ 50, 122])
torch.Size([2])
【分析】:首先y維度從(3)擴充為(3,),然后將x(2,3)與x(2,)進行相乘,得到(2,),最后去掉一維部分,得到(2)
【總結】:2.3和2.4基本類似,唯一不同的是2.3中一維向量和二維矩陣的乘積運算需要在一維向量前面插入長度為1的新維度(x為一維向量,y為二維矩陣);2.4中二維矩陣和一維向量的乘積運算需要在一維向量后面插入長度為1的新維度(x為二維矩陣,y為一維向量)。
2.5 其他
其他的暫時用不上,有需要的可以自行查閱相關資料~
參考:https://cloud.tencent.com/developer/article/1802317
到此這篇關于PyTorch中torch.matmul()函數用法總結的文章就介紹到這了,更多相關PyTorch torch.matmul()函數用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
DjangoRestFramework 使用 simpleJWT 登陸認證完整記錄
Djangorestframework-simplejwt是Django REST Framework框架的一個jwt插件,使用 python http 工具進行接口測試的方法文中給大家提到,重點給大家分享djangorestframework-simplejwt 使用記錄及登陸認證的完成過程,感興趣的朋友跟隨小編一起看看吧2021-06-06Python matplotlib 畫圖窗口顯示到gui或者控制臺的實例
今天小編就為大家分享一篇Python matplotlib 畫圖窗口顯示到gui或者控制臺的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05