Tensor的概念
說起張量(tensor)就不得不說他和scalar、vertor、matrix之間的關系了,直接上圖:
標量(scalar):只有大小概念,沒有方向的概念。通過一個具體的數值就能表達完整。比如:重量、溫度、長度、提及、時間、熱量等都數據標量。
向量(vector):物理學上也叫矢量,指由大小和方向共同決定的量(跟「標量」相區別)。向量主要有2個維度:大小、方向。比如:力、速度等。
矩陣(matrix):(學過線性代數的都知道,可參見之前的線代筆記)
張量(tensor):一個多維數組,它是標量、向量、矩陣的高位擴展
當下主流的深度網絡學習框架是PyTorch和Tensorflow。
對於這兩個框架而言,我只想用一句代碼來闡述我心中的雜亂:
Import torch as tf
但是,我還是選擇了PyTorch( ^_^ /\ ~_~ )
tensor,是PyTorch中最基礎的數據類型,也是進行數據存儲和運算的基本單元。
數組array這個概念,數組是類似於列表的高階對象,是有序的元素序列。
Tensor在PyTorch的地位相當於Array在Numpy中地位。
實質上Pytorch將Numpy的Array包裝成Tensor,為其定義了各種各樣的運算方法和函數
以至於處理tensor的時候,覺得自己在調用Numpy和Pandas這兩個包處理。
Tensor的屬性
每一個tensor都有三個屬性:torch.dtype,
torch.device,
和torch.layout
.
torch.dtype
Pytorch擁有12個不同的數據類型。
tensor類型 相關代碼
>>> float_tensor = torch.ones(1, dtype=torch.float) >>> double_tensor = torch.ones(1, dtype=torch.double) >>> complex_float_tensor = torch.ones(1, dtype=torch.complex64) >>> complex_double_tensor = torch.ones(1, dtype=torch.complex128) >>> int_tensor = torch.ones(1, dtype=torch.int) >>> long_tensor = torch.ones(1, dtype=torch.long) >>> uint_tensor = torch.ones(1, dtype=torch.uint8) >>> double_tensor = torch.ones(1, dtype=torch.double) >>> bool_tensor = torch.ones(1, dtype=torch.bool) >>> long_zerodim = torch.tensor(1, dtype=torch.long) >>> int_zerodim = torch.tensor(1, dtype=torch.int) >>> torch.add(5, 5).dtype torch.int64 >>> (int_tensor + 5).dtype torch.int32 >>> (int_tensor + long_zerodim).dtype torch.int32 >>> (long_tensor + int_tensor).dtype torch.int64 >>> (bool_tensor + long_tensor).dtype torch.int64 >>> (bool_tensor + uint_tensor).dtype torch.uint8 >>> (float_tensor + double_tensor).dtype torch.float64 >>> (complex_float_tensor + complex_double_tensor).dtype torch.complex128 >>> (bool_tensor + int_tensor