成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文詳解深度學習中的標量、向量、矩陣、張量

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

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

1、標量

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

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

示例:

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

結果:

圖片


2、向量

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

表示與運算:用下標引用元素,如圖片向量默認方向是列向量

示例:

x = torch.arange(4)
x

結果:

圖片

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

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


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

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

3、矩陣

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

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

圖片

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

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

結果:

圖片

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

A.T

結果:

圖片


4、張量

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

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

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

結果:

圖片

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

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

按元素運算的形狀不變性

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

張量間運算結果的形狀規(guī)律

給定具有相同形狀的任意兩個張量,任何按元素二元運算的結果都將是相同形狀的張量

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

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

圖片

與標量運算的特點

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

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

圖片

降維操作

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

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

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

A_sum_axis0 = A.sum(axis=0)
A_sum_axis0, A_sum_axis0.shape
# 結果:(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
# 結果:(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ù)的列。

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

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

非降維求和與累積求和

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

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

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


由于 sum_A 在對每行進行求和后仍保持兩個軸,這樣可以通過廣播將 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,)的張量),且長度相同。
 輸出:返回一個標量,表示兩個向量的點積。
 
 
 
 
 
 import torcha = torch.tensor([1, 2, 3])b = torch.tensor([4, 5, 6])dot_product = torch.dot(a, b)print("點積結果:", 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("點積結果:", 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("矩陣乘積結果:", matmul_result)  # 輸出:32
# 二維矩陣
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])
matrix_product = torch.matmul(A, B)
print("矩陣乘積結果:\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ù)學符號

圖片

A * B

圖片

在深度學習中,Hadamard 積和點積的應用場景

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

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

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

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

總結:

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

矩陣-向量積

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

圖片

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

計算示例

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

矩陣-矩陣乘法

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

圖片

圖片

圖片

幾何意義:矩陣 - 矩陣乘法可以表示多個線性變換的復合。例如,先進行一個旋轉變換,再進行一個縮放變換,這兩個變換對應的矩陣相乘就得到了表示這兩個變換復合效果的矩陣。

計算示例

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


責任編輯:龐桂玉 來源: 小白學AI算法
相關推薦

2017-04-26 14:32:24

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

2017-11-20 05:08:16

深度學習激活函數(shù)神經(jīng)網(wǎng)絡

2018-08-08 16:08:45

深度學習機器學習NLP

2017-10-24 11:19:16

深度學習機器學習數(shù)據(jù)

2018-07-03 09:12:23

深度學習正則化Python

2022-07-06 10:23:13

深度學習神經(jīng)網(wǎng)絡

2023-10-23 18:04:42

Rust深度學習框架

2018-07-20 14:58:16

深度學習梯度下降損失函數(shù)

2021-09-08 17:16:00

JVM反射 Java

2018-10-18 11:00:50

人工智能機器學習模型偏差

2017-10-25 19:05:18

深度學習語音分離

2022-06-09 08:17:30

Python__new__

2024-03-01 19:26:22

2018-08-31 14:51:30

人工智能深度學習機器學習

2021-02-11 09:01:32

CSS開發(fā) SDK

2025-03-18 10:00:00

Embedding向量嵌入

2022-06-26 00:18:05

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

2020-12-01 09:30:34

區(qū)塊鏈

2023-07-17 10:45:03

向量數(shù)據(jù)庫NumPy

2019-11-06 17:00:51

深度學習神經(jīng)網(wǎng)絡人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线播放av | 午夜影院普通用户体验区 | 精品久久久久久久 | 国产精品国产三级国产aⅴ原创 | 日韩在线免费视频 | 一级大片免费 | 91免费看片 | 91精品一区二区三区久久久久 | 精品伊人 | 亚洲国产一区二区三区, | 欧美视频区 | 日本特黄特色aaa大片免费 | 欧美一区二区三区精品免费 | 亚洲精品乱码久久久久久蜜桃91 | 精品日韩电影 | 草久免费视频 | 成人免费一区二区三区视频网站 | 日韩一区精品 | 日韩一区二区三区视频在线观看 | 黄a在线观看 | 欧美精品三区 | 亚洲欧美高清 | 精品久久久久国产免费第一页 | 欧美一卡二卡在线 | 久久婷婷av | 精品一区二区免费视频 | 国产日韩精品在线 | 国产高清在线精品一区二区三区 | 国产三级在线观看播放 | av日韩在线播放 | 日韩视频在线一区 | 老外黄色一级片 | 在线看亚洲 | 欧美日韩一区不卡 | 精品一区二区在线观看 | 青青久草 | 波多野结衣av中文字幕 | 中文字幕一区二区三区在线视频 | 欧美日韩精品一区二区三区蜜桃 | 日韩在线一区二区三区 | 亚洲精选久久 |