torch常用的函數


1、torch.cat():是將兩個張量(tensor)拼接在一起。

C = torch.cat( (A,B),0 )  #按維數0拼接(行數增加)
C = torch.cat( (A,B),1 )  #按維數1拼接(列數增加)

2、tensor.expand_as():把一個tensor變成和函數括號內一樣形狀的tensor

3、tensor.narrow(dim,index,number):dim-取行/列;index-從索引index開始取;number-取的行數/列數

4、contiguous():在調用view()之前需要先調用contiguous()

5、tensor.contiguous().view():范數的數據和傳入的tensor一樣,只是形狀不同;注意view()返回的tensor和傳入的tensor共享內存,意思就是只要修改其中一個,數據都會變;如果出現-1,-1表示讓電腦幫助我們計算,看例子:

import torch a = torch.arange(0,20)      #此時a的shape是(1,20)
a.view(4,5).shape       #輸出為(4,5)
a.view(-1,5).shape      #輸出為(4,5)
a.view(4,-1).shape      #輸出為(4,5)

6、tensor.transpose(0,1):將0維與1為交互,即轉置

7、Tensor.uniform_(from=-1, to=1):將tensor用從均勻分布中抽樣得到的值填充

a = torch.Tensor(2, 3).uniform_(-1, 1)

8、Tensor.fill_(1):用指定的數填充tensor

a = torch.Tensor(2,3).fill_(1)

9、Tensor.new():創建一個新的Tensor,該Tensor的type和device都和原有的Tensor保持一致,且該Tensor中無內容;

inputs = torch.randn(m, n)
new_inputs = inputs.new()
new_inputs = torch.Tensor.new(inputs)

#實際應用(添加噪聲),可以對Tensor添加噪聲,添加如下代碼即可實現:
noise = inputs.data.new(inputs.size()).normal_(0,0.01)

#Tensor.data:從原有計算中分離(復制)出來的一個tensor變量(不安全)

10、Tensor.squeeze() & Tensor.unsqueeze() & view():

 1 a = torch.arange(0, 9)
 2 print(a.shape)  # torch.Size([9])
 3 
 4 # 1、利用view()改變tensor的形狀。值得注意的是view不會修改自身的數據,返回的新tensor與源tensor共享內存;同時必須保證前后元素總數一致。
 5 b = a.view(3, 3)
 6 print(b.shape)  # torch.Size([2, 5])
 7 
 8 # 2、unsqueeze()該函數用來增加某個維度。在PyTorch中維度是從0開始的
 9 # 在第一個維度(即維度序號為0)前增加一個維度。同理,可在其他位置添加維度
10 c = b.unsqueeze(0)
11 print(c.shape)  # torch.Size([1, 3, 3])
12 
13 d = c.unsqueeze(2)
14 print(d.shape)  # torch.Size([1, 3, 3])
15 
16 # 3、squeeze():該函數用來減少某個維度。
17 e = d.squeeze(2)
18 print(e.shape)

11、

 

12、

 

13、

14、

15、

 

 

 

 

 

 

 

 


 


免責聲明!

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



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