自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文詳解深度學(xué)習(xí)中的標(biāo)量、向量、矩陣、張量

人工智能
在深度學(xué)習(xí)領(lǐng)域,標(biāo)量、向量、矩陣和張量是不可或缺的基本概念。本文將簡要介紹這些數(shù)學(xué)基礎(chǔ),幫助讀者更好地理解它們在深度學(xué)習(xí)中的作用和應(yīng)用。

在深度學(xué)習(xí)領(lǐng)域,標(biāo)量、向量、矩陣和張量是不可或缺的基本概念。它們不僅是數(shù)學(xué)工具,更是理解和構(gòu)建神經(jīng)網(wǎng)絡(luò)的關(guān)鍵。從簡單的標(biāo)量運(yùn)算到復(fù)雜的張量處理,這些概念貫穿于數(shù)據(jù)表示、模型構(gòu)建和算法優(yōu)化的全過程。本文將簡要介紹這些數(shù)學(xué)基礎(chǔ),幫助讀者更好地理解它們在深度學(xué)習(xí)中的作用和應(yīng)用。

1、標(biāo)量

定義僅包含一個數(shù)值的量,像北京溫度 52°F,其中 52 就是標(biāo)量。在數(shù)學(xué)里,標(biāo)量變量常用普通小寫字母(如 x、y、z)表示 ,所有(連續(xù))實數(shù)標(biāo)量的空間用 R 表示,x ∈ R 表示 x 是實值標(biāo)量。

表示與運(yùn)算:由只有一個元素的張量表示。通過代碼能對其進(jìn)行加、乘、除、指數(shù)等算術(shù)運(yùn)算。

示例:

import torch
x = torch.tensor(3.0)
y = torch.tensor(2.0)
x + y, x * y, x / y, x**y

結(jié)果:

圖片


2、向量

定義:可看作標(biāo)量值組成的列表,其元素或分量具有實際意義。在數(shù)學(xué)表示法中,向量通常記為粗體、小寫符號(如圖片),通過一維張量表示。

表示與運(yùn)算:用下標(biāo)引用元素,如圖片向量默認(rèn)方向是列向量。

示例:

x = torch.arange(4)
x

結(jié)果:

圖片

向量長度通常稱為向量的維度,與普通的Python數(shù)組一樣,可以通過調(diào)用Python的內(nèi)置len()函數(shù)來訪問張量的長度。

當(dāng)用張量表示一個向量(只有一個軸)時,也可以通過.shape屬性訪問向量的長度。 形狀(shape)是一個元素組,列出了張量沿每個軸的長度(維數(shù))。 對于只有一個軸的張量,形狀只有一個元素。


x.shape
# 結(jié)果:torch.Size([4])

注意,維度(dimension)這個詞在不同上下文時往往會有不同的含義,這經(jīng)常會使人感到困惑。 為了清楚起見,明確:向量或軸的維度被用來表示向量或軸的長度,即向量或軸的元素數(shù)量。 然而,張量的維度用來表示張量具有的軸數(shù)。 在這個意義上,張量的某個軸的維數(shù)就是這個軸的長度

3、矩陣

定義:是向量從一階到二階的推廣,通常用粗體、大寫字母(如圖片

表示:矩陣元素用圖片表示,可通過行、列索引訪問。

圖片

當(dāng)調(diào)用函數(shù)來實例化張量時, 可以通過指定兩個分量m和n來創(chuàng)建一個形狀為圖片的矩陣。

A = torch.arange(20).reshape(5, 4)
A

結(jié)果:

圖片

交換矩陣的行和列時,結(jié)果稱為矩陣的轉(zhuǎn)置(transpose)。 通常用圖片來表示矩陣的轉(zhuǎn)置:

A.T

結(jié)果:

圖片


4、張量

定義:就像向量是標(biāo)量的推廣,矩陣是向量的推廣一樣,張量是描述具有任意數(shù)量軸的n維數(shù)組的通用方法,可以構(gòu)建具有更多軸的數(shù)據(jù)結(jié)構(gòu)。 例如,向量是一階張量,矩陣是二階張量。

表示與運(yùn)算:尤其在處理圖像等數(shù)據(jù)時,張量變得更加重要。一般來說,圖像以n維數(shù)組形式出現(xiàn), 其中3個軸對應(yīng)于高度、寬度,以及一個通道(channel)軸, 用于表示顏色通道(紅色、綠色和藍(lán)色)。

X = torch.arange(24).reshape(2, 3, 4)
X

結(jié)果:

圖片

5、張量算法的基本性質(zhì)

張量算法的基本性質(zhì)在深度學(xué)習(xí)中至關(guān)重要,它包括按元素運(yùn)算的形狀不變性、張量間運(yùn)算結(jié)果的形狀規(guī)律、與標(biāo)量運(yùn)算的特點,以及降維、非降維求和與累積求和等操作特性。這些性質(zhì)貫穿于深度學(xué)習(xí)的各類計算中,對理解和運(yùn)用深度學(xué)習(xí)模型起著關(guān)鍵作用,具體如下:

按元素運(yùn)算的形狀不變性

從按元素操作的定義可知,任何按元素的一元運(yùn)算都不會改變其操作數(shù)的形狀。例如,對一個張量進(jìn)行取絕對值、平方等一元運(yùn)算,運(yùn)算后的張量形狀與原張量保持一致。這一性質(zhì)確保了在對張量的每個元素進(jìn)行單獨操作時,數(shù)據(jù)的結(jié)構(gòu)不會被破壞,為后續(xù)基于張量形狀的計算和處理提供了穩(wěn)定性。

張量間運(yùn)算結(jié)果的形狀規(guī)律

給定具有相同形狀的任意兩個張量,任何按元素二元運(yùn)算的結(jié)果都將是相同形狀的張量。

兩個相同形狀的矩陣相加,會在這兩個矩陣上執(zhí)行元素加法,得到的結(jié)果矩陣形狀與原矩陣相同。這一性質(zhì)使得在進(jìn)行張量間的批量運(yùn)算時,無需擔(dān)心形狀不匹配的問題,提高了計算的效率和準(zhǔn)確性。

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()  # 通過分配新內(nèi)存,將A的一個副本分配給B
A, A + B

圖片

與標(biāo)量運(yùn)算的特點

將張量乘以或加上一個標(biāo)量不會改變張量的形狀,其中張量的每個元素都將與標(biāo)量相加或相乘。這種特性在深度學(xué)習(xí)中常用于對張量進(jìn)行縮放或平移操作,以調(diào)整數(shù)據(jù)的分布或特征的強(qiáng)度。

a = 2
X = torch.arange(24).reshape(2, 3, 4)
a + X, (a * X).shape

圖片

降維操作

求和降維:可以對任意張量進(jìn)行元素求和操作,默認(rèn)情況下,調(diào)用求和函數(shù)會沿所有的軸降低張量的維度,使它變?yōu)橐粋€標(biāo)量。

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
A.sum()
# 結(jié)果:tensor(190.))

也可指定張量沿某一個軸來通過求和降低維度, 以矩陣為例,為了通過求和所有行的元素來降維(軸0),可以在調(diào)用函數(shù)時指定axis=0。

A_sum_axis0 = A.sum(axis=0)
A_sum_axis0, A_sum_axis0.shape
# 結(jié)果:(tensor([40., 45., 50., 55.]), torch.Size([4]))

指定axis=1將通過匯總所有列的元素降維(軸1)

A_sum_axis1 = A.sum(axis=1)
A_sum_axis1, A_sum_axis1.shape
# 結(jié)果:(tensor([ 6., 22., 38., 54., 70.]), torch.Size([5]))

對于一個三維張量,軸(axis)的定義如下:

軸0(axis=0):通常表示張量中的第一個維度,可以理解為不同的數(shù)據(jù)樣本或者批次(batch)。

軸1(axis=1):通常表示張量中的第二個維度,可以理解為數(shù)據(jù)的行。

軸2(axis=2):通常表示張量中的第三個維度,可以理解為數(shù)據(jù)的列。

平均值計算:平均值是與求和相關(guān)的量,通過將總和除以元素總數(shù)來計算。計算平均值的函數(shù)也可沿指定軸降低張量的維度。如A.mean(axis = 0)計算矩陣 A 按列的平均值,A.mean()計算所有元素的平均值。

A.mean(), A.sum() / A.numel() # 結(jié)果:(tensor(9.5000), tensor(9.5000))
A.mean(axis=0), A.sum(axis=0) / A.shape[0] # 結(jié)果:(tensor([ 8.,  9., 10., 11.]), tensor([ 8.,  9., 10., 11.]))

非降維求和與累積求和

非降維求和:有時在調(diào)用函數(shù)計算總和或均值時保持軸數(shù)不變很有用。

例如sum_A = A.sum(axis = 1, keepdims = True),對矩陣 A 按行求和后仍保持兩個軸,結(jié)果形狀為 (5, 1) 。

sum_A = A.sum(axis=1, keepdims=True)
sum_A


由于 sum_A 在對每行進(jìn)行求和后仍保持兩個軸,這樣可以通過廣播將 A 除以 sum_A,實現(xiàn)按行的歸一化等操作。
A / sum_A


沿某個軸計算 A 元素的累積總和, 比如 axis=0 (按行計算),可以調(diào)用 cumsum 函數(shù)。 此函數(shù)不會沿任何軸降低輸入張量的維度。

累積求和:沿某個軸計算張量元素的累積總和,如A.cumsum(axis = 0)按行計算累積總和,此函數(shù)不會沿任何軸降低輸入張量的維度。在分析時間序列數(shù)據(jù)或逐步累加的特征時,累積求和操作能幫助獲取數(shù)據(jù)的累積趨勢和狀態(tài)。

A.cumsum(axis=0)

圖片

點積(Dot Product)

給定兩個向量圖片, 它們的點積(dot product)(圖片圖片) 是相同位置的按元素乘積的和:圖片。

1.torch.dot

功能:torch.dot用于計算兩個一維向量的點積(Dot Product)。
 輸入要求:兩個輸入必須是一維向量(即形狀為(n,)的張量),且長度相同。
 輸出:返回一個標(biāo)量,表示兩個向量的點積。
 
 
 
 
 
 import torcha = torch.tensor([1, 2, 3])b = torch.tensor([4, 5, 6])dot_product = torch.dot(a, b)print("點積結(jié)果:", dot_product)  # 輸出:32

torch.dot用于計算兩個一維向量的點積(Dot Product)。
import torch
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
dot_product = torch.dot(a, b)
print("點積結(jié)果:", dot_product)  # 輸出:32

2.torch.matmul

  • 功能torch.matmul用于計算兩個張量的矩陣乘積(Matrix Product),支持一維向量、二維矩陣以及更高維度張量的乘法。
  • 輸入要求
    對于一維向量,torch.matmul會將它們視為行向量和列向量,計算它們的矩陣乘積。
    對于二維矩陣,torch.matmul計算矩陣乘法。
    對于高維度張量,torch.matmul會計算批量矩陣乘積。
  • 輸出:返回一個張量,形狀根據(jù)輸入張量的形狀決定。
import torch
# 一維向量
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
# torch.matmul 會將一維向量視為行向量和列向量,計算矩陣乘積
matmul_result = torch.matmul(a, b)
print("矩陣乘積結(jié)果:", matmul_result)  # 輸出:32
# 二維矩陣
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])
matrix_product = torch.matmul(A, B)
print("矩陣乘積結(jié)果:\n", matrix_product)
# 輸出:
# tensor([[19, 22],
#         [43, 50]])
對于一維向量
torch.dot(a, b)
torch.matmul(a, b)
torch.dot
torch.matmul
(1,)

對于二維及高維矩陣torch.matmul可以計算矩陣乘積,但torch.dot不能用于二維矩陣。

Hadamard積

兩個矩陣的按元素乘法稱為Hadamard積(Hadamard product)(數(shù)學(xué)符號

圖片

A * B

圖片

在深度學(xué)習(xí)中,Hadamard 積和點積的應(yīng)用場景

Hadamard 積是指兩個相同維度的張量逐元素相乘,通常用于以下場景:

  1. 激活函數(shù)的逐元素操作:在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)(如 ReLU、Sigmoid 或 Tanh)通常對輸入張量逐元素應(yīng)用。這種操作可以看作是輸入張量與一個逐元素的非線性函數(shù)的 Hadamard 積。例如,output = activation(input),其中activation是逐元素的非線性函數(shù)。
  2. 特征融合:在多特征融合時,Hadamard 積可以用于將不同來源的特征逐元素相乘,從而實現(xiàn)特征的加權(quán)融合。例如,在某些注意力機(jī)制中,通過 Hadamard 積對特征進(jìn)行加權(quán),以突出重要特征。
  3. LSTM 門控機(jī)制:在長短期記憶網(wǎng)絡(luò)(LSTM)中,Hadamard 積用于計算遺忘門和輸入門的輸出。遺忘門和輸入門的輸出通過 Hadamard 積逐元素作用于細(xì)胞狀態(tài)。具體公式為:圖片。
  4. 圖像處理:在圖像處理中,Hadamard 積可以用于圖像融合。例如,將不同波段的圖像逐元素相乘,以增強(qiáng)特定的光譜特征。此外,Hadamard 積還可以用于圖像濾波,通過逐元素相乘實現(xiàn)特定的濾波效果。

點積通常用于計算兩個向量的相似度或進(jìn)行線性變換,常見于以下場景:

  1. 注意力機(jī)制:點積在注意力機(jī)制中廣泛使用,用于計算查詢(query)和鍵(key)之間的相似度。例如,在點積注意力機(jī)制中,通過計算查詢和鍵的點積來生成注意力權(quán)重。具體公式為:圖片。
  2. 卷積神經(jīng)網(wǎng)絡(luò)(CNN):在卷積層中,卷積核與輸入特征圖的卷積操作本質(zhì)上是點積計算。每個神經(jīng)元與輸入特征圖上的一個小區(qū)域進(jìn)行點積運(yùn)算,從而提取出有用的特征。
  3. 特征向量的相似度計算:在自然語言處理(NLP)中,詞向量之間的點積可以用于計算詞與詞之間的相似度。例如,通過點積計算兩個詞向量的相似度,進(jìn)而實現(xiàn)文本分類和情感分析。
  4. 正則化:在 L2 正則化(權(quán)重衰減)中,點積用于計算權(quán)重矩陣的 Frobenius 范數(shù)。具體來說,權(quán)重矩陣與自身的點積(即 Frobenius 內(nèi)積)用于正則化項。

總結(jié):

  • Hadamard 積:適用于逐元素操作,如激活函數(shù)、特征融合、LSTM 門控機(jī)制和圖像處理。
  • 點積:適用于計算向量相似度、卷積操作、注意力機(jī)制和正則化。

矩陣-向量積

定義:設(shè)矩陣圖片,向量圖片,那么矩陣 - 向量積圖片是一個m維向量圖片。其計算方式是y的第i個元素圖片,其中圖片是矩陣A的第i行第j列的元素,圖片是向量x的第j個元素。

圖片

幾何意義矩陣 - 向量積可以看作是對向量x進(jìn)行線性變換,將其從n維空間映射到m維空間。例如,在二維平面中,一個2×2的矩陣可以對平面上的向量進(jìn)行旋轉(zhuǎn)、縮放等操作。

計算示例

  • 設(shè)矩陣圖片,向量圖片
  • 圖片。
torch.mv(A, x)

矩陣-矩陣乘法

定義:設(shè)矩陣圖片,矩陣圖片,則矩陣C=AB是一個m×p的矩陣,其中C的第i行第j列的元素圖片。這意味著C的每個元素是A的對應(yīng)行與B的對應(yīng)列的元素乘積之和。

圖片

圖片

圖片

幾何意義:矩陣 - 矩陣乘法可以表示多個線性變換的復(fù)合。例如,先進(jìn)行一個旋轉(zhuǎn)變換,再進(jìn)行一個縮放變換,這兩個變換對應(yīng)的矩陣相乘就得到了表示這兩個變換復(fù)合效果的矩陣。

計算示例

  • 設(shè)矩陣圖片,矩陣圖片。
  • 圖片。
torch.mm(A, B)


責(zé)任編輯:龐桂玉 來源: 小白學(xué)AI算法
相關(guān)推薦

2017-11-20 05:08:16

深度學(xué)習(xí)激活函數(shù)神經(jīng)網(wǎng)絡(luò)

2017-04-26 14:32:24

神經(jīng)網(wǎng)絡(luò)人工智能對杭樣本

2018-08-08 16:08:45

深度學(xué)習(xí)機(jī)器學(xué)習(xí)NLP

2017-10-24 11:19:16

深度學(xué)習(xí)機(jī)器學(xué)習(xí)數(shù)據(jù)

2018-07-03 09:12:23

深度學(xué)習(xí)正則化Python

2022-07-06 10:23:13

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2023-10-23 18:04:42

Rust深度學(xué)習(xí)框架

2018-07-20 14:58:16

深度學(xué)習(xí)梯度下降損失函數(shù)

2017-10-25 19:05:18

深度學(xué)習(xí)語音分離

2024-03-01 19:26:22

2021-09-08 17:16:00

JVM反射 Java

2025-03-18 10:00:00

Embedding向量嵌入

2018-08-31 14:51:30

人工智能深度學(xué)習(xí)機(jī)器學(xué)習(xí)

2018-10-18 11:00:50

人工智能機(jī)器學(xué)習(xí)模型偏差

2022-06-09 08:17:30

Python__new__

2022-06-26 00:18:05

企業(yè)產(chǎn)品化變量

2021-02-11 09:01:32

CSS開發(fā) SDK

2021-08-30 10:07:12

Redis BigKeyHotKey

2018-08-16 08:19:30

2019-11-06 17:00:51

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)人工智能
點贊
收藏

51CTO技術(shù)棧公眾號