微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

np.random.choice() 在实例方法中没有按预期工作

如何解决np.random.choice() 在实例方法中没有按预期工作

我正在使用深度 Q 学习神经网络训练强化学习代理,为此,我主要有 2 个文件一个环境 python 脚本和一个 Jupyter Notebook(使用 Google Colab),我在其中定义了代理类,我正在那里培训它。

我的环境 Python 脚本中的一个函数self.reset,顾名思义,它会重置所有环境状态值。这是它的样子

 def reset(self):
        return self.action_space,self.state_space,self.state_space[(np.random.choice(len(self.state_space)))],self.reset_days_total(self.days_total) 

self.reset_days_total() 只是同一个类的另一个函数,我用它来重置另一个实例变量。)

虽然 state_space 和 action_space 的值在整个训练过程中保持不变,但函数返回的初始状态应该在每次调用随机选择。

当我尝试直接在笔记本上选择随机状态时,np.random.choice 函数类变量起作用。

    for i in range(5):
           print(env.state_space[(np.random.choice(len(env.state_space)))])
--------------------------------------------------------------------------------------------------

 o/p: (4,7,0)
      (3,2,0)
      (4,13,4)
      (2,16,3)
      (2,9,5)

但是,当我尝试使用实例方法实现相同的目标时,它不会在每次运行该方法时返回随机状态。第一次后它停止返回随机值,此后无论我运行该函数多少次都返回一个不变的值。

 env = CabDriver()
 for i in range(5):
     action_space,state_space,state_new,days_total = env.reset()
     print(f"State: {state_new}")
--------------------------------------------------------------------------------------------------

o/p: State: (4,22,0)
     State: (4,0)

我很想知道为什么这两种情况的行为不同,以及如何在访问 env.reset() 方法时克服这种特殊行为。如果您能在正确的方向上推动此方法按预期工作,我们将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。