提问者:小点点

PyTorch:使用BCELoss解决多标签、二分类问题


我目前正在研究一个PyTorch模型,它应该可以解决多标签、二分类问题。

我的模型的最后一层是Sigmoid层,我想使用Pytorch的BCELoss。

def train_step(self, x, y):
    self._optim.zero_grad()
    output = self._model(x)
    loss = self._crit(output, y)
    loss.backward()
    self._optim.step()

这里,y是例如张量([[0,0]])(两个标签为整数),但输出是例如张量([[0.5332,0.3933]],grad_fn=

这会导致错误:

{RuntimeError}标量类型的预期对象浮点数,但在调用_thnn_binary_cross_entropy_forward时,参数#2'target'的标量类型为Long

知道怎么解决吗?


共1个答案

匿名用户

如果您定义了一个数据集类,您应该使用如下方式返回张量浮点类型的标签:

"targets": torch.tensor(self.target[item], dtype=torch.float)