我在多标签分类问题中使用了sigmoid交叉熵损失函数,参考了这个教程。然而,无论是在教程中的结果还是我的结果中,输出预测都在(-Inf, Inf)
范围内,而sigmoid函数的范围应该是[0, 1]
。sigmoid函数只在反向传播中处理吗?也就是说,前向传递不应该压缩输出吗?
回答:
在这个例子中,输入到"SigmoidCrossEntropyLoss"
层的,是一个全连接层的输出。确实,"InnerProduct"
层的输出值没有限制,可以在[-inf, inf]
范围内。
然而,如果你仔细检查"SigmoidCrossEntropyLoss"
,你会注意到它内部包含了一个"Sigmoid"
层——以确保梯度估计的稳定性。
因此,在测试时,你应该用一个简单的"Sigmoid"
层替换"SigmoidCrossEntropyLoss"
,以输出每个类别的预测结果。