繁体   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