当前位置:   article > 正文

RuntimeError: invalid multinomial distribution (encountering probability entry < 0)_runtimeerror: invalid multinomial distribution (su

runtimeerror: invalid multinomial distribution (sum of probabilities <= 0)

在使用torch.multinomial()对rnn网络输出值进行选择时,当学习率高于0.000001时,运行报错“RuntimeError: invalid multinomial distribution (encountering probability entry < 0)。
然而,低学习率情况下,我的算法根本学习不到东西。
该报错的意思是指多项式分布无效,遇见概率条目小于零的情况。
考虑到我的神经网络不应该出现负值,我定位到运行一段时间后,神经网络输出值全为nan。我突发奇想,在全连接层后添加一个Softmax()激活函数将输出映射至0到1区间。再次运行后,该报错消失。在此处贴出我的神经网络,供大家参考:

    def __init__(self, num_actions):
        super(PolicyNetwork, self).__init__()  
        self.conv1 = nn.Conv1d(1, 5, kernel_size=2)
        self.bn1 = nn.BatchNorm1d(5)
        self.conv2 = nn.Conv1d(5, 10, kernel_size=3)
        self.bn2 = nn.BatchNorm1d(10)
        self.conv3 = nn.Conv1d(10, 10, kernel_size=3)
        self.bn3 = nn.BatchNorm1d(10)
        self.head = nn.Linear(140, num_actions)
        self.softmax = nn.Softmax()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

除此之外,我也考虑过是否是梯度消失或者梯度爆炸的问题,在反向传播阶段添加了梯度截断。

    for param in model.parameters():
        param.grad.data.clamp_(-500, 500)
  • 1
  • 2

希望下次遇到该报错,可以回顾本帖。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/57760
推荐阅读
相关标签
  

闽ICP备14008679号