一、理解tensor的基本概念
Tensor是深度學習中非常關鍵的數據結構之一,它可以將數據在多維空間中抽象出來。在TensorFlow深度學習框架中,tensor指代了用於表示張量計算的N維數組。
Tensor的維度大小可以看成是N維數組中每個元素在該維度上的個數。就如同普通數組中的一維數組表示了數組長度一樣,tensor也可以看成是由一個個的n維數組組成的。
下面是一個簡單的例子,我們可以將一個二維數組看成是由多個一維數組組成的:
import numpy as np
a = np.array([[1,2,3], [4,5,6]])
print(a.shape) # 輸出(2, 3)
在這個例子中,我們可以將二維數組a看成由兩個一維數組[1,2,3]和[4,5,6]組成的。
二、三種常見的tensor維度
1. scalar(0-d tensor)
scalar可以理解為是一個標量,它是一個零維的tensor。就像一個數字是一個標量一樣,一個tensor的元素也只有一個。我們可以使用numpy創建一個標量,然後輸出它的形狀:
import numpy as np
s = np.array(2.2)
print(s.shape) # 輸出()
2. vector(1-d tensor)
vector是指有序數組成的一維列表,它有一個維度大小。一個有三個元素的向量可以看做長這樣:
v = np.array([1,2,3])
print(v.shape) # 輸出(3,)
3. matrix(2-d tensor)
matrix是由多個向量組成的二維列表。矩陣有兩個維度大小,通常用於表示二維特徵,例如一張圖片。
m = np.array([[1,2,3], [4,5,6]])
print(m.shape) # 輸出(2, 3)
三、修改tensor的維度大小
在使用深度學習框架時,修改tensor的維度大小是非常常見的操作。下面我們將介紹幾種修改tensor維度大小的方法。
1. flatten操作
flatten操作可以將一個矩陣轉換成一維數組,該操作可用於卷積神經網路中的全連接層輸入。
預測矩陣為:
pred = np.array([[1,2], [3,4], [5,6]])
我們可以使用flatten操作將矩陣轉換成一維數組:
pred_flat = pred.flatten()
print(pred_flat.shape) # 輸出(6,)
print(pred_flat) # 輸出[1 2 3 4 5 6]
2. reshape操作
reshape操作可以改變tensor的維度大小,但是必須保證重塑後的tensor大小和原tensor大小相同。
預測矩陣為:
pred = np.array([[1,2], [3,4], [5,6]])
我們可以使用reshape操作將矩陣改變維度大小:
pred_reshape = np.reshape(pred, (2, 3))
print(pred_reshape.shape) # 輸出(2, 3)
print(pred_reshape) # 輸出[[1 2 3] [4 5 6]]
3. transpose操作
transpose操作可以改變tensor的維度順序,例如一個2×3的矩陣,我們可以通過transpose操作將其變為3×2的矩陣。
預測矩陣為:
pred = np.array([[1,2], [3,4], [5,6]])
我們可以使用transpose操作將矩陣轉置:
pred_transpose = np.transpose(pred)
print(pred_transpose.shape) # 輸出(2, 3)
print(pred_transpose) # 輸出[[1 3 5] [2 4 6]]
總結
tensor是深度學習中非常重要的數據結構之一,它可以將數據在多維空間中抽象出來。本文從 tensor的基本概念、三種常見的tensor維度和修改tensor的維度大小這三個方面,詳細分析了tensor的維度大小問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/196353.html