簡體   English   中英

nn.Linear(feature_size,1)* n與PyTorch中的nn.Linear(feature_size,n)

[英]nn.Linear(feature_size, 1)*n vs nn.Linear(feature_size, n) in PyTorch

我在PyTorch中編寫了兩種類型的線性分類器:

torch.manual_seed(0)
fc = []  
for i in range(n):  
  fc.append(nn.Linear(feature_size, 1)) 

另一個:

torch.manual_seed(0)
fc = nn.Linear(feature_size, n)

在多標簽分類模型中,使用這兩種類型的功能性化學分析可獲得不同的結果。

實際上,這些fc的初始化方式不同,導致的結果也不同。 如果我想使用兩種類型的fc獲得相似的結果,哪一種是正確的,該怎么辦。


附加信息:

我找出導致不良結果的原因:
第一類FC訓練中未更新!
但是我不知道為什么沒有更新,我的代碼如下:

x = self.features(input)
res = []
for i in range(self.num_classes):
    res.append(self.fc[i](x.cpu()))
res = torch.cat(res, 1)
return res.cuda()

有什么想法嗎?

如果將兩種類型初始化為完全相同的值會怎樣? 他們仍然學習不同的分類嗎?
您在這些分類器之上使用了什么損失函數? 是否具有相同的損失函數?

在計算方面,兩種類型都執行相同的操作:它們將輸入特征向量與n權重向量相乘。 因此,如果權重向量具有相同的值,則兩種類型都應輸出相同的分類。
我認為就運行時間和效率而言,最好使用一個n維分類器來反對n 1D:我認為這種方式允許更多的硬件加速選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM