[英]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.