如何解决使用torch.nn.CrossEntropyLoss时是否必须在def forward中添加softmax
https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html
当我阅读以上内容时,我了解到torch.nn.CrossEntropy已经计算出最后一层的exp得分。因此,我认为前向功能不必包含softmax。例如, 返回self.fc(x)而不是返回nn.softmax(self.fc(x))。但是,我很困惑,因为我已经看到了几种同时使用这两种方式的ConvNet分类器实现(它们在返回或不返回softmax的情况下都使用交叉熵损失)。
解决方法
JHPark,
您是正确的-使用torch.nn.CrossEntropyLoss
不需要包含softmax
图层。如果确实包含softmax
,则它仍将导致正确的分类结果,因为softmax不会更改哪个元素的得分最高。但是,如果应用两次,它可能会使输出的相对水平失真,从而使梯度减弱,并可能会减慢训练速度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。