Python pytorch:随机分类器:ValueError:优化器获取了一个空参数列表

Python pytorch:随机分类器:ValueError:优化器获取了一个空参数列表,python,pytorch,torch,Python,Pytorch,Torch,在pytorch中有没有最佳实践或有效的方法来使用随机分类器?我的随机分类器基本上如下所示: def forward(self, inputs): # get a random tensor logits = torch.rand(batch_size, num_targets, num_classes) return logits 这在原则上应该很好,但优化器会引发一个ValueError,因为与系统中的所有其他分类器/模型相比,分类器显然没有任何可以优化的参数。是否

在pytorch中有没有最佳实践或有效的方法来使用随机分类器?我的随机分类器基本上如下所示:

def forward(self, inputs):
    # get a random tensor
    logits = torch.rand(batch_size, num_targets, num_classes)
    return logits
这在原则上应该很好,但优化器会引发一个
ValueError
,因为与系统中的所有其他分类器/模型相比,分类器显然没有任何可以优化的参数。是否有torch内置解决方案,或者我必须更改系统的架构(以不执行优化)

编辑:如下图所示,如果向模型中添加一些任意参数,丢失将引发
运行时错误:张量的元素0不需要梯度,也没有梯度fn

def __init__(self, transformer_models: Dict, opt: Namespace):
    super(RandomMulti, self).__init__()
    self.num_classes = opt.polarities_dim
    # add some parameters so that the optimizer doesn't raise an exception
    self.some_params = nn.Linear(2, 2)
我的假设是有一个更简单的解决方案,因为拥有一个随机的基线分类器在机器学习中是很常见的事情。

确实拥有一个“随机”基线是常见的做法,但通常不需要显式地生成一个,更不用说“训练”它了。在大多数情况下,您可以对“随机”基线有相当准确的期望值。例如,在ImageNet分类中,您有1000个大小相等的类别,而随机预测一个类别应使您的预期精度为1/1000。您不需要实例化随机分类器来生成该数字

如果你坚持显式地实例化一个随机分类器,“训练”它的意义是什么?你会犯错误,pytorch根本无法理解你在做什么。你可以有一个随机分类器,你可以评估它的性能,但是训练它没有意义