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

pytorch中部分矩陣乘法和數(shù)組乘法的小結(jié)

 更新時(shí)間:2023年03月27日 09:30:23   作者:Cretheego  
本文主要介紹了pytorch中部分矩陣乘法和數(shù)組乘法的小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、torch.mul

該乘法可簡(jiǎn)單理解為矩陣各位相乘,一個(gè)常見(jiàn)的例子為向量點(diǎn)乘,源碼定義為torch.mul(input,other,out=None)。其中other可以為一個(gè)數(shù)也可以為一個(gè)張量,other為數(shù)即張量的數(shù)乘。

該函數(shù)可觸發(fā)廣播機(jī)制(broadcast)。只要mat1與other滿足broadcast條件,就可可以進(jìn)行逐元素相乘 。

tensor1 = 2*torch.ones(1,4)
tensor2 = 3*torch.ones(4,1)
print(torch.mul(tensor1, tensor2))
#輸出結(jié)果為:
tensor([[6., 6., 6., 6.],
        [6., 6., 6., 6.],
        [6., 6., 6., 6.],
        [6., 6., 6., 6.]])
# 生成指定張量
c = torch.Tensor([[1, 2, 3], [4, 5 ,6]])
print(c.shape)  # 2*3
print(c)
 
# 生成隨機(jī)張量
d = torch.randn(2,2,3) 
print(d)
print(d.shape)  # 2*2*3
 
mul = torch.mul(c, d) # c會(huì)自動(dòng)broadcast和d進(jìn)行匹配
print(mul.shape)      # 2*2*3
print(mul)

二、torch.mm

該函數(shù)一般只能用來(lái)計(jì)算兩個(gè)二維矩陣的矩陣乘法,而且不支持broadcast操作。該函數(shù)源碼定義為torch.mm(input,mat2,out=None) ,參數(shù)與返回值均為tensor形式。

a=torch.ones(4,3)  
b=2*torch.ones(3,2)  
c=torch.empty(4,2)  
torch.mm(a,b,out=c)  
print(torch.mm(a,b))  
print( c )
#輸出結(jié)果為
tensor([[6., 6.],
        [6., 6.],
        [6., 6.],
        [6., 6.]])
tensor([[6., 6.],
        [6., 6.],
        [6., 6.],
        [6., 6.]])

三、torch.matmul

這個(gè)矩陣乘法是在torch.mm的基礎(chǔ)上增加了廣播機(jī)制,源碼定義為torch.matmul(input,other,out=None)。

其基本運(yùn)算規(guī)則如下:

如果兩個(gè)參數(shù)都為一維,則等價(jià)于torch.mul,需要注意的是:此時(shí)的out不接受任何參數(shù)

如果兩個(gè)張量都為二維且符合矩陣相乘規(guī)則,或第一個(gè)參數(shù)為一維(長(zhǎng)度為m,這里等價(jià)為大小為1* m),第二個(gè)參數(shù)為二維(大小為m* n)則運(yùn)算等價(jià)于torch.mm

如果第一個(gè)參數(shù)為二維(大小m* n),第二個(gè)參數(shù)為一維(長(zhǎng)度為n),這里第二個(gè)參數(shù)會(huì)進(jìn)行轉(zhuǎn)置成為n* 1的列向量,隨后進(jìn)行矩陣相乘,將得到的結(jié)果再進(jìn)行轉(zhuǎn)置,最終返回一個(gè)大小為1* m的向量

tensor1 = torch.tensor([[1,1,1,1],[2,2,2,2],[3,3,3,3]],dtype=torch.float32)
tensor2 = torch.ones(4)
print(tensor1.size())
print(tensor2.size())
print(torch.matmul(tensor1, tensor2).shape)
#輸出結(jié)果為:
torch.Size([3, 4])
torch.Size([4])
torch.Size([3])

還有一種情況就是任意一個(gè)參數(shù)至少為3維, 當(dāng)前面的維度相同且最后兩個(gè)維度符合二維矩陣運(yùn)算規(guī)則可進(jìn)行計(jì)算,例如第一參數(shù)的大小為a* b * c * m,第二個(gè)參數(shù)的大小為a* b* m* d,則返回一個(gè)大小為a* b* c * d的張量,可觸發(fā)廣播機(jī)制。

tensor1 = torch.ones(1,4,3,2)
tensor2 = torch.ones(2,6)
print(torch.matmul(tensor1, tensor2).size())
#輸出結(jié)果為:
torch.Size([1, 4, 3, 6])

四、三維帶Batch矩陣乘法 torch.bmm()

torch.bmm(bmat1,bmat2), 其中bmat1(B×n×m),bmat2(B×m×d)輸出out的維度是B×n×d,該函數(shù)兩個(gè)輸入必須三維矩陣中的第一維要要相同,不支持broadCast操作。

五、torch中tensor數(shù)組的廣播計(jì)算

首先定義兩個(gè)張量,x的形狀是[1,2,1],y的形狀是[1,2,2]。

當(dāng)x與y相乘時(shí),由于x.size(2)不等于y.size(2),x會(huì)被擴(kuò)展為[1,2,2]形狀,然后再與張量y進(jìn)行乘法運(yùn)算。

x = torch.rand(1,2,1)
y = torch.rand(1,2,2)

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

相關(guān)文章

  • 使用Python腳本操作MongoDB的教程

    使用Python腳本操作MongoDB的教程

    這篇文章主要介紹了使用Python腳本操作MongoDB的教程,MongoDB作為非關(guān)系型數(shù)據(jù)庫(kù)得到了很大的宣傳力度,而市面上的教程一般都是講解JavaScript的腳本操作,本文則是基于Python,需要的朋友可以參考下
    2015-04-04
  • Python利用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài)

    Python利用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài)

    PSUtil是一個(gè)跨平臺(tái)的Python庫(kù),用于檢索有關(guān)正在運(yùn)行的進(jìn)程和系統(tǒng)利用率(CPU,內(nèi)存,磁盤(pán),網(wǎng)絡(luò),傳感器)的信息。本文就來(lái)用PsUtil實(shí)現(xiàn)實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài),感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • 配置python的編程環(huán)境之Anaconda + VSCode的教程

    配置python的編程環(huán)境之Anaconda + VSCode的教程

    這篇文章主要介紹了配置python的編程環(huán)境之Anaconda + VSCode的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 在RedHat系Linux上部署Python的Celery框架的教程

    在RedHat系Linux上部署Python的Celery框架的教程

    這篇文章主要介紹了在RedHat系Linux上部署Python的Celery框架的教程, Celery是一個(gè)并行分布框架,擁有良好的I/O性能,需要的朋友可以參考下
    2015-04-04
  • python實(shí)現(xiàn)ID3決策樹(shù)算法

    python實(shí)現(xiàn)ID3決策樹(shù)算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)ID3決策樹(shù)算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 解決python中os.system調(diào)用exe文件的問(wèn)題

    解決python中os.system調(diào)用exe文件的問(wèn)題

    這篇文章主要介紹了解決python中os.system調(diào)用exe文件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python 中獲取數(shù)組的子數(shù)組示例詳解

    Python 中獲取數(shù)組的子數(shù)組示例詳解

    在 Python 中獲取一個(gè)數(shù)組的子數(shù)組時(shí),可以使用切片操作,使用切片操作來(lái)獲取一個(gè)數(shù)組的一段連續(xù)的子數(shù)組,并且還可以使用一些方便的語(yǔ)法來(lái)簡(jiǎn)化代碼,這篇文章主要介紹了如何在 Python 中獲取數(shù)組的子數(shù)組,需要的朋友可以參考下
    2023-05-05
  • wxPython窗口的繼承機(jī)制實(shí)例分析

    wxPython窗口的繼承機(jī)制實(shí)例分析

    這篇文章主要介紹了wxPython窗口的繼承機(jī)制,較為詳細(xì)的講述了wxPython窗口的繼承機(jī)制及相關(guān)用法,并對(duì)其中的易錯(cuò)點(diǎn)進(jìn)行了簡(jiǎn)單的分析,需要的朋友可以參考下
    2014-09-09
  • 利用Python實(shí)現(xiàn)批量打包程序的工具

    利用Python實(shí)現(xiàn)批量打包程序的工具

    auto-py-to-exe與pyinstaller都無(wú)法直接一次性打包多個(gè)程序,想打包多個(gè)程序需要重新操作一遍。所以本文將用Python實(shí)現(xiàn)批量打包程序的工具,感興趣的可以了解一下
    2022-07-07
  • OpenCV 圖像梯度的實(shí)現(xiàn)方法

    OpenCV 圖像梯度的實(shí)現(xiàn)方法

    梯度簡(jiǎn)單來(lái)說(shuō)就是求導(dǎo)。本文主要介紹了OpenCV 圖像梯度的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評(píng)論