Torch - Torch 張量
張量是多維陣列,可以儲存各種型別的資料。它們類似於 NumPy 陣列,但具有附加功能,例如用於加速計算的 GPU。張量可以以多種方式表示資料,例如從向量到標量或矩陣。張量非常靈活;這種靈活性使張量在機器學習和深度學習的廣泛應用中更強大。
例如,在影像處理中,3D 張量可以用寬度、高度和顏色通道來表示影像。在自然語言處理中,2D 張量可以表示每一行對應一個句子,每一列對應一個詞嵌入。
張量可以輕鬆地與其他資料結構(例如 Python 列表和 NumPy 陣列)進行轉換,從而與現有程式碼庫整合。這與硬體加速相結合,使張量成為機器學習模型開發和部署中的基本概念。
張量屬性
張量具有不同的屬性,這些屬性指定有關屬性的資訊:
size(): 張量的維度。
nDimension(): 張量的維度數。
type(): 張量的資料型別。
我們可以使用以下方法訪問這些方法屬性:
print(tensor:size()) print(tensor:nDimension()) print(tensor:type())
張量中的運算
以下是可以在 Torch 張量上執行的基本運算:
算術運算
矩陣運算
約簡運算
逐元素運算
Torch 張量函式概述
Torch 張量中的這些運算指定了用於困難的深度學習任務的元素計算。
| 函式 | 描述 |
|---|---|
| torch.add() | 將兩個張量相加 |
| torch.sub() | 從一個張量中減去另一個張量 |
| torch.mul() | 將兩個數字相乘 |
| torch.div() | 將一個張量除以另一個張量。 |
| torch.mm() | 執行矩陣乘法。 |
| torch.matmul() | 在矩陣中執行乘法和支援廣播。 |
| torch.t() | 轉置一個 2D 張量。 |
| torch.sum() | 對張量中的所有元素求和。 |
| torch.mean() | 計算所有元素的平均值。 |
| torch.max() | 返回張量中的最大值。 |
| torch.min() | 返回張量中的最小值。 |
| torch.pow() | 計算每個元素的冪。 |
| torch.sqrt() | 計算每個元素的平方根。 |
| torch.abs() | 返回每個元素的絕對值。 |
這些運算對於各種深度學習任務來說是困難的,因為它們允許進行高效和並行的計算。Torch 張量中的每個運算都使其成為深度學習和數值計算中用途廣泛且強大的工具。
建立張量
可以使用以下方法在 Torch 中建立張量:
從 Lua 表
我們可以使用 torch.Tensor() 直接從 Lua 表建立張量。這用於小型資料集,或者我們可以手動指定資料。
local data = {{2, 3}, {1, 2}}
local tensor = torch.Tensor(data)
使用工廠方法
Torch 提供不同的工廠方法來建立具有特定值或形狀的張量。一些常用方法包括:
torch.Tensor(): 建立一個未初始化的張量。
torch.zeros(): 建立一個填充為零的張量。
torch.ones() 建立一個填充為一的張量。
torch.rand(): 建立一個包含隨機值的張量。
以下幾行在 Torch 中建立不同的 4*4 張量:
local empty_tensor = torch.Tensor(4, 4) local zeros_tensors = torch.zeros(4, 4) local ones_tensor = torch.ones(4, 4) local ransom_tensor = torch.rand(4, 4)