今天會把Pytorch在張量這方面的內容做一個記錄。
同時希望可以提供大家一丟丟幫助!
因為今兒分享的內容,絕對是一些非常乾貨的例子。
先簡單介紹下,在PyTorch中,張量是核心資料結構,它是一個多維數組,類似NumPy中的數組。張量不僅是儲存資料的容器,也是進行各種數學運算和深度學習操作的基礎。
下面從三方面做一個總結:
圖片
張量是一種多維數組,它可以是標量(零維數組)、向量(一維數組)、矩陣(二維數組)或具有更高維度的數組。
在PyTorch中,張量是torch.Tensor的實例,可以透過不同的方式創建,例如直接從Python列表、NumPy數組或透過特定函數產生。
import torch# 创建一个标量scalar_tensor = torch.tensor(3.14)# 创建一个向量vector_tensor = torch.tensor([1, 2, 3])# 创建一个矩阵matrix_tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])# 创建一个3D张量tensor_3d = torch.rand((2, 3, 4))# 2行3列4深度
每個張量都有一些重要的屬性,包括形狀(shape)、資料類型(dtype)和裝置(device)。
# 获取张量的形状shape = tensor_3d.shape# 获取张量的数据类型dtype = tensor_3d.dtype# 获取张量所在的设备device = tensor_3d.device
張量的形狀定義了其維度和每個維度上的大小。例如,形狀為(2, 3, 4)的張量具有2行、3列和4個深度。形狀對於理解和操作張量非常重要。
# 获取张量的形状shape = tensor_3d.shape# 改变张量的形状reshaped_tensor = tensor_3d.view(3, 8)# 将原始形状(2, 3, 4)变为(3, 8)
PyTorch中的張量是基於Tensor類別實現的,它提供了底層儲存的抽象。
張量包含三個主要元件:
(Storage)儲存是實際儲存資料的地方,它是一塊連續的記憶體區域。多個張量可以共享相同的存儲,從而減少內存消耗。儲存中的資料會依照張量的形狀進行排列。
# 获取张量的存储storage = tensor_3d.storage()
張量的形狀定義了其維度和每個維度上的大小。形狀資訊有助於解釋儲存中資料的組織方式。
# 获取张量的形状shape = tensor_3d.shape
步幅是指在儲存中移動到下一個元素所需的步數。了解步幅有助於理解在張量中進行索引和切片時的效能。
# 获取张量的步幅stride = tensor_3d.stride()
PyTorch提供了豐富的張量運算,包括數學運算、邏輯運算、索引和切片等。
這裡列舉最常見的集中操作:
# 加法result_add = tensor_3d + 2# 乘法result_mul = tensor_3d * 3# 矩阵乘法matrix_a = torch.rand((2, 3))matrix_b = torch.rand((3, 4))result_matmul = torch.mm(matrix_a, matrix_b)
# 大小比较result_compare = tensor_3d > 0.5# 逻辑运算result_logical = torch.logical_and(result_add, result_compare)
# 索引element = tensor_3d[0, 1, 2]# 切片sliced_tensor = tensor_3d[:, 1:3, :]
# 改变形状reshaped_tensor = tensor_3d.view(3, 8)# 转置transposed_tensor = tensor_3d.transpose(0, 2)
#廣播是一種自動擴展張量的操作,使得形狀不同的張量可以進行逐元素的數學運算。
# 广播tensor_a = torch.rand((1, 3, 1))tensor_b = torch.rand((2, 1, 4))result_broadcast = tensor_a + tensor_b
今兒介紹的是關於PyTorch中張量的基礎概念、原理以及常見運算。
張量作為深度學習中的基本資料結構,對於理解和實現神經網路非常關鍵。
以上是深入理解Pytorch核心,Tensor的突破之路!的詳細內容。更多資訊請關注PHP中文網其他相關文章!