用于多标签分类的张量输出激活函数

Output activation function for tensors for multilabel classification

我期望的标签是像 tensor([[0, 1, 0, 1], [1, 1, 1, 0]]) 这样的张量。

我的模型的输出(请注意,我停止训练只是为了获得值,因此它们不能准确表示神经元的激活)也是一个张量,如 tensor([[-10.6964, -13.8998, 0.8348, -45.7040], [-10.3260, -13.8385, -9.2342, -5.3424]])

我直接在输出和标签上使用 BCEWithLogitsLoss 是不是错了?在使用 BCEWithLogitsLoss 之前,我是否需要将输出张量转换为类似于预期标签的二进制张量?我知道 BCEWithLogitsLoss 只是 BCELoss + Sigmoid 激活。如何获得预期标签张量类型的值以及在这种情况下我应该使用什么损失?

在multi-label的情况下class化BCELoss是一个常见的选择。 BCEWithLogitsLoss 直接作用于输出和标签,因为它期望 logits 作为一个输入,而 class (0 或 1)作为第二个输入。 您可以在此处找到有关此损失和预期标签张量的更多详细信息: BCEWithLogitsLoss