PyTorch中torch.matmul()函數(shù)常見用法總結(jié)
一、函數(shù)介紹
pytorch中兩個(gè)張量的乘法可以分為兩種:
- 兩個(gè)張量對(duì)應(yīng)元素相乘,在PyTorch中可以通過(guò)torch.mul函數(shù)(或*運(yùn)算符)實(shí)現(xiàn);
- 兩個(gè)張量矩陣相乘,在PyTorch中可以通過(guò)torch.matmul函數(shù)實(shí)現(xiàn);
torch.matmul(input, other) → Tensor
計(jì)算兩個(gè)張量input和other的矩陣乘積
【注意】:matmul函數(shù)沒(méi)有強(qiáng)制規(guī)定維度和大小,可以用利用廣播機(jī)制進(jìn)行不同維度的相乘操作。
二、常見用法
torch.matmul()也是一種類似于矩陣相乘操作的tensor連乘操作。但是它可以利用python中的廣播機(jī)制,處理一些維度不同的tensor結(jié)構(gòu)進(jìn)行相乘操作。這也是該函數(shù)與torch.bmm()區(qū)別所在。
2.1 兩個(gè)一維向量的乘積運(yùn)算
若兩個(gè)tensor都是一維的,則返回兩個(gè)向量的點(diǎn)積運(yùn)算結(jié)果:
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())
運(yùn)行結(jié)果:
tensor([1, 2]) tensor([3, 4])
tensor(11) torch.Size([])
2.2 兩個(gè)二維矩陣的乘積運(yùn)算
若兩個(gè)tensor都是二維的,則返回兩個(gè)矩陣的矩陣相乘結(jié)果:
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())
運(yùn)行結(jié)果:
tensor([[21, 24, 27],[47, 54, 61]]) torch.Size([2, 3])
2.3 一個(gè)一維向量和一個(gè)二維矩陣的乘積運(yùn)算
若input為一維,other為二維,則先將input的一維向量擴(kuò)充到二維(維數(shù)前面插入長(zhǎng)度為1的新維度),然后進(jìn)行矩陣乘積,得到結(jié)果后再將此維度去掉,得到的與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())
運(yùn)行結(jié)果:
tensor([21, 24, 27]) torch.Size([3])
【分析】:首先將x維度從(2)擴(kuò)充為(,2),然后將x(,2) 與y(2,3)進(jìn)行相乘,得到(,3),最后去掉一維部分,得到(3)
2.4 一個(gè)二維矩陣和一個(gè)一維向量的乘積運(yùn)算
若input為二維,other為一維,則先將other的一維向量擴(kuò)充到二維(維數(shù)后面插入長(zhǎng)度為1的新維度),然后進(jìn)行矩陣乘積,得到結(jié)果后再將此維度去掉,得到的與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())
運(yùn)行結(jié)果:
tensor([ 50, 122])
torch.Size([2])
【分析】:首先y維度從(3)擴(kuò)充為(3,),然后將x(2,3)與x(2,)進(jìn)行相乘,得到(2,),最后去掉一維部分,得到(2)
【總結(jié)】:2.3和2.4基本類似,唯一不同的是2.3中一維向量和二維矩陣的乘積運(yùn)算需要在一維向量前面插入長(zhǎng)度為1的新維度(x為一維向量,y為二維矩陣);2.4中二維矩陣和一維向量的乘積運(yùn)算需要在一維向量后面插入長(zhǎng)度為1的新維度(x為二維矩陣,y為一維向量)。
2.5 其他
其他的暫時(shí)用不上,有需要的可以自行查閱相關(guān)資料~
參考:https://cloud.tencent.com/developer/article/1802317
到此這篇關(guān)于PyTorch中torch.matmul()函數(shù)用法總結(jié)的文章就介紹到這了,更多相關(guān)PyTorch torch.matmul()函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用C語(yǔ)言的實(shí)現(xiàn)
這篇文章主要介紹了Python調(diào)用C語(yǔ)言的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python base64庫(kù)給用戶名或密碼加密的流程
這篇文章主要介紹了python base64庫(kù)給用戶名或密碼加密,需要的朋友可以參考下2020-01-01python 利用turtle庫(kù)繪制笑臉和哭臉的例子
今天小編就為大家分享一篇python 利用turtle庫(kù)繪制笑臉和哭臉的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11DjangoRestFramework 使用 simpleJWT 登陸認(rèn)證完整記錄
Djangorestframework-simplejwt是Django REST Framework框架的一個(gè)jwt插件,使用 python http 工具進(jìn)行接口測(cè)試的方法文中給大家提到,重點(diǎn)給大家分享djangorestframework-simplejwt 使用記錄及登陸認(rèn)證的完成過(guò)程,感興趣的朋友跟隨小編一起看看吧2021-06-06Python matplotlib 畫圖窗口顯示到gui或者控制臺(tái)的實(shí)例
今天小編就為大家分享一篇Python matplotlib 畫圖窗口顯示到gui或者控制臺(tái)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05