原文:https://www.jianshu.com/p/5ae644748f21
要介紹Tensor這個數據類型,我覺得有必要扯一下數學。
我們都知道:
標量(Scalar)是只有大小,沒有方向的量,如1,2,3等
向量(Vector)是有大小和方向的量,其實就是一串數字,如(1,2)
矩陣(Matrix)是好幾個向量拍成一排合並而成的一堆數字,如[1,2;3,4]
那么張量(Tensor)是什么呢?呵呵呵呵!大家估計也能猜出來!是按照三維排列的一堆數字?
是的。但是也不完全正確。
其實標量,向量,矩陣它們三個也是張量,標量是零維的張量,向量是一維的張量,矩陣是二維的張量。
除此之外,張量還可以是四維的、五維的、。。。等等
數學扯完了,我們擼串代碼操練操練 (*ˉ︶ˉ*)
1 >>>import torch #引用torch包 2 3 >>>x = torch.Tensor(2,3) #構造一個2x3的矩陣,沒初始化但仍然會有值 4 5 >>>x 6 7 8.0118e+28 4.5768e-41 8.0118e+28 8 9 4.5768e-41 2.9747e-37 1.4013e-45 10 11 [torch.FloatTensor of size 2x3] #可以看出數據類型是浮點數的2x3矩陣
看矩陣看不出張量的道道,我們來點刺激的
1 >>>y=torch.Tensor(4,2,3) #構造一個4x2x3的張量,沒初始化 2 3 >>>y 4 5 (0 ,.,.) = 6 7 1.00000e-29 * 8 9 0.0000 2.5244 0.0000 10 11 2.5244 0.0000 0.0000 12 13 14 (1 ,.,.) = 15 16 1.00000e-29 * 17 18 0.0000 0.0000 0.0000 19 20 0.0000 0.0000 0.0000 21 22 23 (2 ,.,.) = 24 25 1.00000e-29 * 26 27 0.0000 0.0000 0.0000 28 29 0.0000 0.0000 0.0000 30 31 32 (3 ,.,.) = 33 34 1.00000e-29 * 35 36 0.0000 0.0000 0.0000 37 38 2.5244 0.0000 2.5244 39 40 [torch.FloatTensor of size 4x2x3]
我們從上面的返回值可以看出,4x2x3的張量y由4個2x3的矩陣構成,這符合了我們數學上的定義。
