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方式,即會修改調用者自己的數據,在實際應用中需要加以區分。
- #_Author_:Monkey
- #!/usr/bin/env python
- #-*- coding:utf-8 -*-
- import torch as t
- # from __future__ import print_function
- a = t.Tensor(2,3) #指定Tensor的形狀,a的數值取決於內存空間的狀態
- print(a)
- '''''tensor([[2.1469e+33, 5.9555e-43, 2.1479e+33],
- [5.9555e-43, 6.3273e+30, 5.9555e-43]])'''
- b = t.Tensor([ [1,2,3],[4,5,6] ]) #用list的數據創建Tensor
- print(b)
- '''''tensor([[1., 2., 3.],
- [4., 5., 6.]])'''
- c = b.tolist() #Tensor轉list
- print(c)
- '''''[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]'''
- #torch.size()返回torch.Size的子類,但其使用方式與tuple稍有區別
- b_size = b.size()
- print(b_size)
- '''''torch.Size([2, 3])'''
- d = b.numel()
- print(d)
- '''''6'''
- #創建一個和b形狀一樣的tensor
- e = t.Tensor(b_size)
- f = t.Tensor((2,3))
- print(e)
- print(f)
- '''''tensor([[2.6492e+21, 4.5908e-41, 0.0000e+00],
- [0.0000e+00, 1.4013e-45, 2.9775e-41]])
- tensor([2., 3.])'''
- print(e.shape)
- '''''torch.Size([2, 3])'''
- print(t.ones(2,3))
- '''''tensor([[1., 1., 1.],
- [1., 1., 1.]])'''
- print(t.zeros(2,3))
- '''''tensor([[0., 0., 0.],
- [0., 0., 0.]])'''
- print(t.arange(1,6,2))
- '''''tensor([1, 3, 5])'''
- print(t.linspace(1,10,3))
- '''''tensor([ 1.0000, 5.5000, 10.0000])'''
- print(t.randn(2,3))
- '''''tensor([[-0.3437, -0.3981, -0.3250],
- [ 2.6717, -0.7511, -0.5858]])'''
- print(t.randperm(5)) #長度為5的隨機排序
- '''''tensor([4, 0, 3, 2, 1])'''
- print(t.eye(2,3)) #對角線為1,不要求行列數一致
- '''''tensor([[1., 0., 0.],
- [0., 1., 0.]])'''