Tensor基本操作


Tensor(張量)

1、Tensor,又名張量,從工程角度來說,可簡單地認為它就是一個數組,且支持高效的科學計算。它可以是一個數(標量)、一維數組(向量)、二維數組(矩陣)或更高維的數組(高階數組),torch里的Tensor支持GPU加速。

基本操作

1、從接口的角度講,對tensor的操作可分為兩類:
    (1)torch.function,如torch.save等
    (2)tensor.function,如tensor.view等
2、從存儲的角度講,對tensor的操作又可分為兩類:
    (1)不會修改自身的數據,如a.add(b),加法的結果會返回一個新的tensor
    (2)會修改自身的數據,如a.add_(b),加法的結果仍存儲在a中,a被修改了
函數名以_結尾的都是inplace方式,即會修改調用者自己的數據,在實際應用中需要加以區分。
 
  1. #_Author_:Monkey  
  2. #!/usr/bin/env python  
  3. #-*- coding:utf-8 -*-  
  4. import torch as t  
  5. # from __future__ import print_function  
  6.   
  7. a = t.Tensor(2,3)       #指定Tensor的形狀,a的數值取決於內存空間的狀態  
  8. print(a)  
  9. '''''tensor([[2.1469e+33, 5.9555e-43, 2.1479e+33], 
  10.         [5.9555e-43, 6.3273e+30, 5.9555e-43]])'''  
  11. b = t.Tensor([ [1,2,3],[4,5,6] ])       #用list的數據創建Tensor  
  12. print(b)  
  13. '''''tensor([[1., 2., 3.], 
  14.         [4., 5., 6.]])'''  
  15. c = b.tolist()      #Tensor轉list  
  16. print(c)  
  17. '''''[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]'''  
  18. #torch.size()返回torch.Size的子類,但其使用方式與tuple稍有區別  
  19. b_size = b.size()  
  20. print(b_size)  
  21. '''''torch.Size([2, 3])'''  
  22. d = b.numel()  
  23. print(d)  
  24. '''''6'''  
  25. #創建一個和b形狀一樣的tensor  
  26. e = t.Tensor(b_size)  
  27. f = t.Tensor((2,3))  
  28. print(e)  
  29. print(f)  
  30. '''''tensor([[2.6492e+21, 4.5908e-41, 0.0000e+00], 
  31.         [0.0000e+00, 1.4013e-45, 2.9775e-41]]) 
  32. tensor([2., 3.])'''  
  33. print(e.shape)  
  34. '''''torch.Size([2, 3])'''  
  35. print(t.ones(2,3))  
  36. '''''tensor([[1., 1., 1.], 
  37.         [1., 1., 1.]])'''  
  38. print(t.zeros(2,3))  
  39. '''''tensor([[0., 0., 0.], 
  40.         [0., 0., 0.]])'''  
  41. print(t.arange(1,6,2))  
  42. '''''tensor([1, 3, 5])'''  
  43. print(t.linspace(1,10,3))  
  44. '''''tensor([ 1.0000,  5.5000, 10.0000])'''  
  45. print(t.randn(2,3))  
  46. '''''tensor([[-0.3437, -0.3981, -0.3250], 
  47.         [ 2.6717, -0.7511, -0.5858]])'''  
  48. print(t.randperm(5))        #長度為5的隨機排序  
  49. '''''tensor([4, 0, 3, 2, 1])'''  
  50. print(t.eye(2,3))           #對角線為1,不要求行列數一致  
  51. '''''tensor([[1., 0., 0.], 
  52.         [0., 1., 0.]])'''  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM