问题描述
我期望的标签是像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