如何解决Pytorch Softmax提供了nans和负值作为输出
我在模型结尾处使用softmax。
但是,经过一些训练后,softmax给出的概率是负的。在某些情况下,我也遇到了nans。
我在搜索中发现的一种解决方案是使用归一化的softmax ...但是我为此找不到任何pytorch注入。
请有人帮忙告知是否有标准化的softmax或如何实现,以使向前和向后的传播变得顺畅。
请注意,我已经在使用torch.nn.utils.clip_grad_norm_(model.parameters(),40)以避免爆炸梯度
我正在使用pytorch 1.6.0
解决方法
Softmax始终会返回肯定结果,但会跟踪其他结果:
val dir = File("/proc/uid_stat/")
出局:
m = nn.Softmax(dim=1)
input = torch.randn(2,3)
print(input)
output = m(input)
output
您正在跟踪行。 请注意
tensor([[ 0.0983,0.4150,-1.1342],[ 0.3411,0.5553,0.0182]])
tensor([[0.3754,0.5152,0.1094],[0.3375,0.4181,0.2444]])
你会得到
0.0983,-1.1342
说0.3411,0.0182
是最大的价值。
硬最大值(我们知道这是max())只会返回最大值。
因此,如果softmax的结果为负,则不可能,这可能是实现失败的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。