【问题标题】:PyTorch: Use BCELoss for multi-label, binary classification problemPyTorch:使用 BCELoss 解决多标签、二元分类问题
【发布时间】:2022-01-04 18:29:13
【问题描述】:

我目前正在研究一个 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 是例如tensor([[0, 0]])(两个标签为整数), 但输出是例如tensor([[0.5332, 0.3933]], grad_fn=<SigmoidBackward>).

这会导致错误:

{RuntimeError}预期的标量类型 Float 的对象,但得到了标量类型 对参数 #2 'target' 的调用很长 _thnn_binary_cross_entropy_forward

知道如何解决这个问题吗?

【问题讨论】:

    标签: python pytorch


    【解决方案1】:

    如果你已经定义了一个数据集类,你应该使用类似这样的方式返回张量浮点类型的标签:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 2019-03-22
      • 2018-12-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多