PyTorch之torch.matmul函數(shù)的使用及說明
一、簡介
torch.matmul
用于兩維或更高維張量的矩陣乘法操作。
它支持廣播機(jī)制,并且能夠處理不同形狀和維度的張量,適用于廣泛的應(yīng)用場景。
二、語法
torch.matmul
函數(shù)的基本語法如下:
torch.matmul(input, other, *, out=None)
三、參數(shù)
input
:第一個(gè)輸入張量。other
:第二個(gè)輸入張量,與input
進(jìn)行矩陣乘法。out
(可選):存儲(chǔ)輸出結(jié)果的張量。
四、示例
下面通過幾個(gè)簡單的例子來演示 torch.matmul
的用法。
示例 1:二維矩陣乘法
import torch # 創(chuàng)建兩個(gè)二維張量 a = torch.tensor([[1, 2], [3, 4]]) b = torch.tensor([[5, 6], [7, 8]]) # 使用 torch.matmul 進(jìn)行矩陣乘法 result = torch.matmul(a, b) print(a) print(b) print("二維矩陣乘法結(jié)果:") print(result)
輸出:
tensor([[1, 2],
[3, 4]])
tensor([[5, 6],
[7, 8]])
二維矩陣乘法結(jié)果:
tensor([[19, 22],
[43, 50]])
在這個(gè)例子中,torch.matmul
對(duì)兩個(gè)二維張量進(jìn)行了標(biāo)準(zhǔn)的矩陣乘法。
示例 2:高維張量乘法
import torch # 創(chuàng)建兩個(gè)高維張量 a = torch.randn(2, 3, 4) b = torch.randn(2, 4, 5) # 使用 torch.matmul 進(jìn)行高維張量乘法 result = torch.matmul(a, b) print("高維張量乘法結(jié)果的形狀:") print(result.shape)
輸出:
高維張量乘法結(jié)果的形狀:
torch.Size([2, 3, 5])
在這個(gè)例子中,torch.matmul
對(duì)兩個(gè)高維張量進(jìn)行了矩陣乘法,并且結(jié)果張量的形狀是 [2, 3, 5]
,符合矩陣乘法的規(guī)則。
沒有了解過的童鞋可能對(duì)這里的乘法規(guī)則有所迷惑,因此解釋一下:對(duì)于高維($\geq$3維度)矩陣乘法,只要保持最后兩個(gè)維(低二維)的矩陣滿足普通矩陣乘法規(guī)則,高維的各維度保持相等或?qū)?yīng)維度中有一個(gè)為1即可。
在這里第2維為(3,4)與(4,5)滿足普通矩陣乘法要求,然后高維相等直接對(duì)應(yīng)位置矩陣相乘即可。
下面的廣播機(jī)制是高維為1的情況,此時(shí)會(huì)觸發(fā)廣播機(jī)制完成高維矩陣的乘法。
示例 3:廣播機(jī)制
import torch # 創(chuàng)建兩個(gè)可以廣播的張量 a = torch.randn(2, 3, 4) b = torch.randn(4, 5) # 使用 torch.matmul 進(jìn)行廣播機(jī)制的矩陣乘法 result = torch.matmul(a, b) print("廣播機(jī)制下的矩陣乘法結(jié)果的形狀:") print(result.shape)
輸出:
廣播機(jī)制下的矩陣乘法結(jié)果的形狀:
torch.Size([2, 3, 5])
在這個(gè)例子中,b
張量的形狀是 [4, 5]
,通過廣播機(jī)制,與 a
張量的形狀 [2, 3, 4]
進(jìn)行了兼容,并得到了結(jié)果張量的形狀 [2, 3, 5]
。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python通過getattr函數(shù)獲取對(duì)象的屬性值
這篇文章主要介紹了Python通過getattr函數(shù)獲取對(duì)象的屬性值,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Python協(xié)程的四種實(shí)現(xiàn)方式總結(jié)
今天繼續(xù)給大家介紹Python關(guān)知識(shí),本文主要內(nèi)容是Python協(xié)程的四種實(shí)現(xiàn)方式。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-01-01如何修復(fù)使用 Python ORM 工具 SQLAlchemy 時(shí)的常見陷阱
SQLAlchemy 是一個(gè) Python ORM 工具包,它提供使用 Python 訪問 SQL 數(shù)據(jù)庫的功能。這篇文章主要介紹了如何修復(fù)使用 Python ORM 工具 SQLAlchemy 時(shí)的常見陷阱,需要的朋友可以參考下2019-11-11教你用Python實(shí)現(xiàn)Excel表格處理
今天教各位小伙伴怎么用Python處理excel,文中有非常詳細(xì)的代碼示例及相關(guān)知識(shí)總結(jié),對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05Python按要求從多個(gè)txt文本中提取指定數(shù)據(jù)的代碼示例
本文給大家介紹了Python如何按要求從多個(gè)txt文本中提取指定數(shù)據(jù),遍歷文件夾并從中找到文件名稱符合我們需求的多個(gè).txt格式文本文件,文中有相關(guān)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12使用keras根據(jù)層名稱來初始化網(wǎng)絡(luò)
這篇文章主要介紹了使用keras根據(jù)層名稱來初始化網(wǎng)絡(luò),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05