问题标签 [rllib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reinforcement-learning - rllib DQN 实施中的 Atari 分数与奖励
我正在尝试使用 RLLib 复制 Breakout 的 DQN 分数。在 500 万步之后,平均奖励为 2.0,而使用 DQN 的 Breakout 已知得分为 100+。我想知道这是否是因为奖励削减,因此实际奖励与 Atari 的分数不对应。在 OpenAI 基线中,实际得分放在info['r']
奖励值中,实际上是裁剪值。RLLib 的情况是否相同?有没有办法在训练时查看实际的平均分数?
lstm - 如何在 rllib 中使用 Marwil 为 LSTM 配置批次
我正在尝试在 rllib 中使用 Marwil 训练 lstm 策略。我找不到任何关于如何为这个问题设置批次的示例。如果没有 lstm 组件,我可以使用此处的说明训练一个 marwil 模型。
https://ray.readthedocs.io/en/latest/rllib-offline.html
但是,当我尝试添加 lstm 组件时,我收到一个关于
“如果定义了状态输入,则必须给出 seq_lens 张量”
我认为这意味着我需要将一系列 RNN 长度传递给它。很公平,我定义
prev_actions -> 剧集中所有 N 点的 20 个过去动作的列表 prev_rewards -> 剧集中所有 N 点的 20 个过去奖励的列表 prev_observations -> 剧集中所有 N 点的 20 个过去观察的列表 seq_lens -> [20 , 20, 20, ..., 20] 为情节中的所有 N 个点
在批处理生成器 API 中,但是一旦我尝试运行 Marwil 训练器,我仍然会收到错误
如果定义了状态输入,则必须给出 seq_lens 张量
有人对此有任何见解吗?
谢谢!
ray - 我们如何在训练期间在 RLlib 中打印动作分布?
我正在尝试在每集结束时打印动作分布,以查看我的代理在做什么。我试图通过包含以下方法将其放入 rock_paper_scissors_multiagent.py
并将回调选项添加到 tune.run。但是,我收到以下错误。这是我应该在每集之后尝试打印政策的方式吗?如果是这样,我做错了什么?rock_paper_scissors_multiagent.py 原始示例在这里:https ://github.com/ray-project/ray/blob/master/rllib/examples/rock_paper_scissors_multiagent.py
tensorboard - 无法在 ray 中定义自定义指标
我正在使用一个名为 FLOW RL 的框架。它使我能够将 rllib 和 ray 用于我的 RL 算法。我一直在尝试在张量板上绘制非学习数据。在 ray 文档(链接)之后,我尝试添加自定义指标。因此,我需要使用由on_episode_step(info)
. 这本字典中应该有一个“情节”元素。这让我可以访问我的自定义标量。但是,每次我尝试访问剧集元素时,都会出现错误,因为它在 info dict 中不存在。这是正常的吗?
文件“examples/rllib/newGreenWaveGrid2.py”,第 295 行,on_episode_start episode = info["episode"] KeyError: 'episode'
flow-project - 运行示例“traffic_light_grid.py”时出现“观察值超出预期值范围”错误
我正在尝试学习如何使用 FLOW。当我尝试运行“flow/example/rllib/traffic_light_grid.py”时,它一直返回“观察值超出预期值范围”错误,直到达到最大错误数。我不知道为什么只有这个示例出错,而其他示例有效。任何人都可以帮助我吗?错误示例如下所示:
我的 SUMO 版本是 v1_1_0+0000-2147d155b1
谢谢
python - RLLib - Tensorflow - InvalidArgumentError:收到的标签值 N 超出 [0, N) 的有效范围
我在自定义环境中使用 RLLib 的 PPOTrainer,我执行trainer.train()
了两次,第一次成功完成,但是当我第二次执行它时,它崩溃并出现错误:
lib/python3.7/site-packages/tensorflow_core/python/client/session.py”,第 1384 行,在 _do_call (pid=15248) raise type(e)(node_def, op, message) (pid=15248)
tensorflow.python.framework.errors_impl.InvalidArgumentError:
收到标签值 5,它超出了 [0, 5) 的有效范围。>标签值:5 5
(pid=15248) [[node default_policy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits(定义在/tensorflow_core/python/framework/ops.py:1751)]]
这是我的代码:
主文件
我的环境.py
我不知道是什么问题,有什么建议吗?这个错误是什么意思?
reinforcement-learning - 是否可以使用 ray Tune 搜索算法指定“episodes_this_iter”?
我是编程/射线的新手,并且有一个简单的问题,即在使用 Ray Tune 时可以指定哪些参数。特别是,光线调谐文档说所有自动填充的字段(steps_this_iter、episodes_this_iter 等)都可以用作停止条件或在调度程序/搜索算法规范中。
但是,以下仅在我删除“episodes_this_iter”规范后才有效。这是否仅作为停止标准的一部分起作用?
python - Flow-Project 教程 04 Visualizer_rllib.py 报错
我是新手,不熟悉示例。在教程 04 可视化示例中,我得到一个属性错误。单元格中的代码是
我得到的错误是:
任何人都可以帮忙吗?
python - rllib 中的“num_envs_per_worker”有什么作用?
对于我的生活,我没有得到“num_envs_per_worker”的作用。如果限制因素是策略评估,为什么我们需要创建多个环境?我们不需要创建多个策略吗?
请问ELI5?
文档说:
单个进程中的矢量化:尽管许多环境可以实现每个核心的高帧速率,但它们的吞吐量在实践中受到步骤之间的策略评估的限制。例如,即使是小型 TensorFlow 模型也会产生几毫秒的延迟来评估。这可以通过为每个进程创建多个 env并跨这些 env 批量策略评估来解决。您可以配置 {"num_envs_per_worker": M} 让 RLlib 为每个工作人员创建 M 个并发环境。RLlib 通过 VectorEnv.wrap() 自动矢量化 Gym 环境。
tensorflow - 了解 RLLIB 中 PPO 的张量板图
我是深度强化学习的初学者,想用 PPO 算法在 RLLIB 中训练我自己的健身房环境。但是,我在查看我的超参数设置是否成功时遇到了一些困难。除了应该上升的明显的 episode_reward_mean 指标外,我们还有许多其他的情节。
我对成功的训练过程中熵应该如何演变特别感兴趣。就我而言,它看起来像这样:
它通常下降到 0 以下,然后收敛。我知道熵作为损失函数的一部分正在强制探索,因此可以加速学习。但是为什么会变成负数呢?它不应该总是大于或等于0吗?
成功培训的其他特征是什么(vf_explained_var、vf_loss、kl、...)?