Pytorch-运行时错误:无效的多项式分布(遇到概率输入<;0)

Pytorch-运行时错误:无效的多项式分布(遇到概率输入<;0),pytorch,reinforcement-learning,stable-baselines,Pytorch,Reinforcement Learning,Stable Baselines,我正在使用稳定的基线3来训练一名经纪人玩游戏。当一名经纪人以第二名球员的身份开始一场比赛时,我试图将这一情况考虑在内 self.env = self.ks_env.train([opponent, None]) 当我尝试运行代码时,出现以下错误: invalid multinomial distribution (encountering probability entry < 0) /opt/conda/lib/python3.7/site-packages/torch/distri

我正在使用稳定的基线3来训练一名经纪人玩游戏。当一名经纪人以第二名球员的身份开始一场比赛时,我试图将这一情况考虑在内

self.env = self.ks_env.train([opponent, None]) 
当我尝试运行代码时,出现以下错误:

invalid multinomial distribution (encountering probability entry < 0)
/opt/conda/lib/python3.7/site-packages/torch/distributions/categorical.py in sample(self, sample_shape)
samples_2d = torch.multinomial(probs_2d, sample_shape.numel(), True).T

我认为这个问题与Pytorch图书馆有关。我的问题是如何解决此问题?

检查您提供的代码后,问题似乎不是来自哪个代理启动游戏,而是来自游戏完成后没有重新启动环境

我刚刚更改了步骤函数,如图所示:

def步骤(自我,动作):
#检查代理的移动是否有效
是否有效=(self.obs['board'][int(action)]==0)
如果有效:#进行移动
self.obs,旧奖励,完成,self.env.step(int(action))
奖励=自我。改变奖励(旧奖励,完成)
否则:#结束比赛并处罚经纪人
奖励,完成,=-10,正确,{}
如果这样做:
self.reset()
返回板翻转(self.obs.mark,
np.数组(self.obs['board'])。重塑(1,self.rows,self.columns)/2),
奖励,完成_
这样,模型就能够进行训练,您可以通过以下代码片段检查它是否按预期工作:

done=True
对于步进范围(500):
如果这样做:
state=env.reset()
状态,奖励,完成,信息=env.step(env.action\u space.sample())
打印(奖励)
链接到我的版本

self.env = self.ks_env.train([None, opponent])