首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BCEWithLogitsLoss:试图将预测标签的二进制输出作为张量,与输出层混淆

BCEWithLogitsLoss:试图将预测标签的二进制输出作为张量,与输出层混淆
EN

Stack Overflow用户
提问于 2020-09-22 03:13:14
回答 1查看 2.5K关注 0票数 2

我的数据集中的每个元素都有一个多标签张量,如[1, 0, 0, 1]1's0's的组合各不相同。在这种情况下,由于我有4个张量,所以我的神经网络的输出层为4。在使用BCEWithLogitsLoss时,当我调用模型(输入)时,得到了一个输出张量,该模型(输入)在(0,3)的范围内,与输出层指定的输出层有4个输出神经元。这不符合预期目标的格式,尽管当我将输出神经元的数目改为2时,就会出现形状不匹配的错误。要解决这个问题需要做些什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-22 08:34:06

在使用BCEWithLogitsLoss时,每个输出二进制标签都要做一个一维预测。

在您的示例中,您有4个要预测的二进制标签,因此,您的模型输出4d向量,每个条目表示一个二进制标签的预测。

使用BCEWithLogitsLoss,您对输出隐式应用Sigmoid:

这种丢失将Sigmoid层和BCELoss合并在一个类中。

因此,如果要获得模型的预测概率,则需要在预测的基础上添加一个torch.sigmoidsigmoid函数将将预测的逻辑转换为概率。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64002566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档