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

问题描述

我期望的标签是像tensor([[0,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激活。如何获得预期标签张量类型的值以及在这种情况下应使用什么损耗?

解决方法

对于多标签分类,BCELoss是常见选择。 BCEWithLogitsLoss直接在输出和标签上起作用,因为它期望将logit作为一个输入,并且将类(0或1)作为第二个输入。 您可以在此处找到有关此损失和预期标签张量的更多详细信息: BCEWithLogitsLoss