pytorch學習問題匯總


 

問題六:

 

問題五:這里是怎么得到的?

 

問題四:為什么會是如下結果?

torch.bernoulli(a)怎么是這個結果?

 

 

問題1:torch各個類型數據格式如何轉換?數據類型在官方文檔torch.Tensor中,有八種類型。

#嘗試一
i32=torch.IntTensor([1,2,3])
i64=torch.LongTensor([1,2,3])
#兩種轉換都報錯
#new_i64=torch.IntTensor(i64)
#new_i32=torch.LongTensor(i32)
#didn't match because some of the arguments have invalid types: (!torch.LongTensor!)

#嘗試二
new_i32=i32.long()
print(torch.equal(new_i32,i64))  #True
#torch.Tensor對應八種數據轉換,各種數據可以相互轉換
i32.float()
i32.double()
i32.half()
i32.byte()
i32.char()
i32.short()
i32.int()
i32.long()

問題2:官方文檔中sequence of tensors是什么意思?在torch.stack(sequencedim=0out=None).

 是tensors構成的序列,可以為列表,也可以為元組

#torch.stack(sequence, dim=0, out=None) 連接Tensors
i32=torch.Tensor([1,2,3])
print(torch.stack([i32,i32,i32]))  #默認dim=0,以列為基准
#  1  2  3
#  1  2  3
#  1  2  3
# [torch.FloatTensor of size 3x3]
print(torch.stack([i32,i32,i32],dim=1))
#  1  1  1
#  2  2  2
#  3  3  3
# [torch.FloatTensor of size 3x3]
print(torch.stack((i32,i32,i32),dim=1))
#  1  1  1
#  2  2  2
#  3  3  3
# [torch.FloatTensor of size 3x3]

問題3:為什么有如下Tensor格式區別?有的是size 3,有的是size 4x1 ?

torch.from_numpy(np.array([1,2,3]))   #torch.IntTensor of size 3
torch.from_numpy(np.array([1.0,2,3])) #torch.DoubleTensor of size 3
torch.nonzero(torch.Tensor([1,2,3,0,4]))==torch.Tensor([0,1,2,4])  #nonzero  非0元素所在位置
# TypeError: eq received an invalid combination of arguments - got (torch.FloatTensor), but expected one of:
#  * (int value)
#       didn't match because some of the arguments have invalid types: (!torch.FloatTensor!)
#  * (torch.LongTensor other)
#       didn't match because some of the arguments have invalid types: (!torch.FloatTensor!)
#注意上面代碼中兩者數據格式類型不一致,torch.FloatTensor   torch.LongTensor
#torch.unsqueeze(input,dim,out=None)
m=torch.Tensor([1,2,3,4])
print(m)                     #torch.FloatTensor of size 4
m_zero=torch.unsqueeze(m,0) print(m_zero) #torch.FloatTensor of size 1x4 m_one=torch.unsqueeze(m,1) print(m_one) #torch.FloatTensor of size 4x1  m_zero_to_m=torch.squeeze(m_zero) print(m_zero_to_m) #torch.FloatTensor of size 4 print(m==m_zero_to_m) #torch.ByteTensor of size 4 # 1 # 1 # 1 # 1
print(m.equal(m_zero_to_m))  True

可見為兩種不同數據類型,可以通過unsqueeze和squeeze來相互轉化。判斷兩個Tensor是否相等,用equal

問題4、


免責聲明!

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



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