我的数据集中的每个元素都有一个多标签张量,如[1, 0, 0, 1],1's和0's的组合各不相同。在这种情况下,由于我有4个张量,所以我的神经网络的输出层为4。在使用BCEWithLogitsLoss时,当我调用模型(输入)时,得到了一个输出张量,该模型(输入)在(0,3)的范围内,与输出层指定的输出层有4个输出神经元。这不符合预期目标的格式,尽管当我将输出神经元的数目改为2时,就会出现形状不匹配的错误。要解决这个问题需要做些什么?
发布于 2020-09-22 08:34:06
在使用BCEWithLogitsLoss时,每个输出二进制标签都要做一个一维预测。
在您的示例中,您有4个要预测的二进制标签,因此,您的模型输出4d向量,每个条目表示一个二进制标签的预测。
使用BCEWithLogitsLoss,您对输出隐式应用Sigmoid:
这种丢失将Sigmoid层和BCELoss合并在一个类中。
因此,如果要获得模型的预测概率,则需要在预测的基础上添加一个torch.sigmoid。sigmoid函数将将预测的逻辑转换为概率。
https://stackoverflow.com/questions/64002566
复制相似问题