『PyTorch』第二彈_張量
阿新 • • 發佈:2017-05-13
ref play spl rip 出錯 margin logs 互轉 演示
參考:http://www.jianshu.com/p/5ae644748f21#
幾個數學概念:
標量(Scalar)是只有大小,沒有方向的量,如1,2,3等
向量(Vector)是有大小和方向的量,其實就是一串數字,如(1,2)
矩陣(Matrix)是好幾個向量拍成一排合並而成的一堆數字,如[1,2;3,4]
其實標量,向量,矩陣它們三個也是張量,標量是零維的張量,向量是一維的張量,矩陣是二維的張量,除此之外,張量不僅可以是三維的,還可以是四維的、五維的...
一點小註意:
1.由於torch和numpy的特殊關系,似乎numpy中array的操作大部分可以在Tensor上實踐
2.任何可以改變tensor內容的操作都會在方法名後加一個下劃線‘_‘,如x.copt_(y)、x.t_()、x.add_(y),等等
張量的基本操作演示:
1 # coding=utf-8 2 3 import torch 4 5 6 # 特別註明:任何可以改變tensor內容的操作都會在方法名後加一個下劃線‘_‘ 7 # 例如:x.copy_(y), x.t_(), 這倆都會改變x的值。 8 9 10 ‘‘‘初始化操作‘‘‘ 11 12 x = torch.Tensor(5,3) # 未初始化的張量 13 print(x) 14 x = torch.rand(5,3) # 隨機初始化的張量 15 print(x) 16 print(x.size()) #查看張量的尺寸 17 # 這是一個tuple
-4.5163e+29 4.5806e-41 -4.5163e+29 4.5806e-41 -8.3134e+23 4.5806e-41 -8.3134e+23 4.5806e-41 -8.3134e+23 4.5806e-41 -8.3134e+23 4.5806e-41 -8.3134e+23 4.5806e-41 -8.3134e+23 [torch.FloatTensor of size 5x3] 0.3349 0.7324 0.7708 0.2973 0.1546 0.5236 0.2481 0.8018 0.3527 0.2328 0.2714 0.5307 0.3042 0.5355 0.2955 [torch.FloatTensor of size 5x3] torch.Size([5, 3])
1 ‘‘‘加法操作‘‘‘ 2 3 a = torch.ones(2,2) 4 b = torch.zeros(2,2) 5 6 # 語法一 7 print(a+b) 8 # 語法二 9 print(torch.add(a,b)) 10 # 語法三 11 print(b.add_(a)) 12 # 語法三 13 c = torch.Tensor(2,2) 14 torch.add(a,b,out=c) 15 print(c)
1 1 1 1 [torch.FloatTensor of size 2x2] 1 1 1 1 [torch.FloatTensor of size 2x2] 1 1 1 1 [torch.FloatTensor of size 2x2] 2 2 2 2 [torch.FloatTensor of size 2x2]
1 ‘‘‘Numpy橋‘‘‘ 2 3 a = torch.ones(3,2) 4 5 a = torch.ones(5) 6 b = a.numpy() # tensor轉換為array 7 a.add_(1) 8 print(b) # a,b共用內存,屬於淺拷貝 9 10 import numpy as np 11 12 a = np.ones(5) 13 b = torch.from_numpy(a) # array轉換為tensor 14 np.add(a,1,out=a) 15 print(b) # a,b共用內存 16 17 # 另外除了CharTensor之外,所有的tensor都可以在CPU運算和GPU預算之間相互轉換 18 # 使用CUDA函數來將Tensor移動到GPU上 19 # 當CUDA可用時會進行GPU的運算 20 x = torch.ones(2,2) 21 y = torch.eye(2,2) 22 if torch.cuda.is_available(): 23 x = x.cuda() 24 y = y.cuda() 25 print(x,y) 26 # print(x+y) # 我的設備沒配置好會出錯,不過顯卡太渣,以後有服務器玩再說吧
[ 2. 2. 2. 2. 2.] 2 2 2 2 2 [torch.DoubleTensor of size 5] 1 1 1 1 [torch.cuda.FloatTensor of size 2x2 (GPU 0)] 1 0 0 1 [torch.cuda.FloatTensor of size 2x2 (GPU 0)] Process finished with exit code 0
『PyTorch』第二彈_張量