討論5種基本和最常用的張量運(yùn)算
討論5種基本和最常用的張量運(yùn)算
深度學(xué)習(xí)使我們能夠執(zhí)行非常復(fù)雜的任務(wù)。為了有效地執(zhí)行任務(wù),我們需要一個(gè)靈活的工具。由于其簡(jiǎn)單性,Pytorch為我們提供了此選項(xiàng)。它使用GPU(圖形處理單元)提供加速的操作。Pytorch是一個(gè)高性能的庫(kù),因此它得到了普及。下面的notebook包含一些基本功能,這些功能對(duì)于執(zhí)行張量運(yùn)算非常有用。這些運(yùn)算用于多維張量和算術(shù)運(yùn)算。通用運(yùn)算——逆運(yùn)算創(chuàng)建運(yùn)算——復(fù)數(shù)算術(shù)運(yùn)算——轉(zhuǎn)置改變運(yùn)算——添加減少運(yùn)算——Amax我們將討論這5個(gè)基本功能的示例并觀察錯(cuò)誤。在開(kāi)始之前,讓我們安裝并導(dǎo)入PyTorch# Windows
# !pip install numpy torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
# Import torch and other required modules
import torch
1. 通用運(yùn)算——逆運(yùn)算
我們將使用的第一個(gè)函數(shù)是“反函數(shù)”。a = torch.randn(2,3,3)
print(a)
torch.inverse(a)
上面的“ randn”函數(shù)創(chuàng)建了一個(gè)3X3方陣,最外面具有2個(gè)行。然后,“逆”函數(shù)取矩陣中各個(gè)元素的逆a = torch.rand(4,4)
print(a)
torch.inverse(a)
上面是一個(gè)4X4方陣,其中每個(gè)元素都使用反函數(shù)進(jìn)行反算。a = torch.rand(4,3)
print(a)
torch.inverse(a)
RuntimeError: A must be batches of square matrices, but they are 3 by 4 matrices
上面給出的第三個(gè)示例拋出錯(cuò)誤!澳妗焙瘮(shù)給出矩陣各個(gè)元素的逆。該錯(cuò)誤歸因于矩陣不是正方形的事實(shí)。通過(guò)更改尺寸,可以獲得正確的結(jié)果。逆函數(shù)對(duì)于在Pytorch神經(jīng)網(wǎng)絡(luò)上執(zhí)行逆函數(shù)非常有用。
2. 創(chuàng)建運(yùn)算——復(fù)數(shù)
讓我們使用函數(shù)通過(guò)創(chuàng)建矢量或矩陣來(lái)初始化對(duì)張量數(shù)據(jù)的處理。在這里,我們將使用復(fù)數(shù)的功能。為了獲得最終的complex64,我們需要輸入float32類型。real = torch.tensor([2,1], dtype=torch.float32)
imag = torch.tensor([2,3], dtype=torch.float32)
a= torch.complex(real, imag)
a.dtype
在下面,我們使用rand函數(shù)創(chuàng)建了名為“ real”和“ imag”的張量。使用“復(fù)數(shù)”函數(shù),我們將兩個(gè)張量結(jié)合在一起,并形成了具有實(shí)數(shù)和虛數(shù)的單個(gè)方程real = torch.rand(2,3)
imag = torch.rand(1,3)
print(real)
print(imag)
x = torch.complex(real, imag,)
print(x)
在下面的示例中,它不是嘗試使用兩個(gè)值“ real”和“ imag”數(shù)據(jù)創(chuàng)建一個(gè)復(fù)數(shù)張量,而是嘗試創(chuàng)建一個(gè)復(fù)數(shù)張量。我們可能會(huì)因?yàn)槿鄙賳蝹(gè)方括號(hào)而看到上述錯(cuò)誤,而該方括號(hào)會(huì)給我們所需的結(jié)果。real = torch.tensor(2., 4)
imag = torch.tensor(7., 3)
x = torch.complex(real, imag,)
x
TypeError: tensor() takes 1 positional argument but 2 were given
我們可以使用上述函數(shù)來(lái)創(chuàng)建由實(shí)數(shù)和虛數(shù)數(shù)據(jù)組成的復(fù)數(shù)張量。
3. 算術(shù)運(yùn)算——轉(zhuǎn)置
在這里,我們將使用轉(zhuǎn)置功能來(lái)處理張量數(shù)據(jù),從而使我們的操作變得容易。a = torch.rand(2,3,5)
print(a)
torch.transpose(a,1,2)
從最外面的第1行開(kāi)始,我們已換位了第一行的所有元素。a = torch.rand(2,5)
print(a)
torch.transpose(a, -1, 0)
這里,在上述情況下,我們給出了要轉(zhuǎn)置的第一維和第二維。TypeError: transpose() received an invalid combination of arguments - got (Tensor), but expected one of: * (Tensor input, name dim0, name dim1) * (Tensor input, int dim0, int dim1)
在張量數(shù)據(jù)上使用轉(zhuǎn)置功能時(shí),我們還必須傳遞尺寸,以闡明需要轉(zhuǎn)置哪些尺寸。如果我們使用't'而不是'transpose'函數(shù),那么上面的函數(shù)將可以正常工作。當(dāng)必須轉(zhuǎn)置張量數(shù)據(jù)的給定維數(shù),同時(shí)指定需要轉(zhuǎn)置的“ n”維數(shù)時(shí),可以使用“轉(zhuǎn)置”函數(shù)。
4. 改變運(yùn)算——添加
讓我們執(zhí)行一些算術(shù)運(yùn)算——在張量數(shù)據(jù)上添加一個(gè)函數(shù)。a = torch.randn(10)
print(a)
torch.a(chǎn)dd(a,5)
第二個(gè)屬性(在上述情況下為5)應(yīng)為整數(shù),必須將其添加到張量數(shù)據(jù)中(在上述情況下)。結(jié)果將是兩個(gè)的總和。a = torch.rand(5)
b = torch.rand(5)
print(a)
print(b)
torch.a(chǎn)dd(a,b)
“add”函數(shù)計(jì)算相同維數(shù)的兩個(gè)張量數(shù)據(jù)之和,并給出相同維數(shù)的結(jié)果。a = torch.rand(10)
b = torch.rand(5)
torch.a(chǎn)dd(a,b)
RuntimeError: The size of tensor a (10) must match the size of tensor b (5) at non-singleton dimension 0
在張量中執(zhí)行任何算術(shù)運(yùn)算時(shí),我們需要注意輸入張量的尺寸彼此匹配。“Add”函數(shù)可用于添加任何兩個(gè)給定的張量,或添加具有給定數(shù)字的張量數(shù)據(jù)。
5. 歸約運(yùn)算——Amax
使用某些歸約運(yùn)算——amax。這些將有助于對(duì)張量數(shù)據(jù)執(zhí)行統(tǒng)計(jì)操作。這里,在下面的示例中,“ amax”函數(shù)用于給出每個(gè)尺寸中的最大元素,其中“ -1”表示要縮小的尺寸。a = torch.rand(3,2)
print(a)
torch.a(chǎn)max(a, dim = -1)
同樣,在以下情況下,“ amax”函數(shù)為每個(gè)切片提供張量數(shù)據(jù)中的最大值。a = torch.rand(5)
print(a)
torch.a(chǎn)max(a, dim=-2)
在以下情況下,amax函數(shù)的維數(shù)在-1到0之間變化。因此,“ dim”屬性必須在此范圍內(nèi)。a = torch.tensor([[3,2], [1,2], [4,7],[6,5]])
print(a)
torch.a(chǎn)max(a, dim = 1)
IndexError: Dimension out of range (expected to be in range of [-1, 0], but got -2)
結(jié)論
在本文中,我們涵蓋了從創(chuàng)建張量數(shù)據(jù)到執(zhí)行算術(shù)運(yùn)算所需的函數(shù)。
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
11月20日火熱報(bào)名中>> 2024 智能家居出海論壇
-
11月28日立即報(bào)名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線峰會(huì)
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
-
精彩回顧立即查看>> 【在線會(huì)議】多物理場(chǎng)仿真助跑新能源汽車
推薦專題
- 1 腦機(jī)接口芯片,華為出了新專利!
- 2 巨頭搶布局,VC狂撒錢,為了能讓「AI讀心」這些公司卷瘋了
- 3 蘋果市值創(chuàng)新高,iPhone 16能否助力突破4萬(wàn)億美元大關(guān)?
- 4 地平線開(kāi)啟配售,阿里百度各砸5000萬(wàn)美金,市值最高超500億
- 5 小馬智行沖刺納斯達(dá)克:或成「全球Robotaxi第一股」,兩年半營(yíng)收約12億元
- 6 云從科技:營(yíng)收低迷與虧損加劇,2025年盈利目標(biāo)挑戰(zhàn)重重
- 7 AI奇跡:域名賣爆,無(wú)名小島意外賺2億
- 8 逆境求生,泄密風(fēng)波中的高精地圖
- 9 特斯拉無(wú)人駕駛來(lái)了,馬斯克的餅卻不香了
- 10 未來(lái)的大模型,或許都是A卡來(lái)算的?
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市