问题标签 [tensorflow-agents]

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.

0 投票
1 回答
57 浏览

python - Google Colab 中的错误:SystemError:此解释器版本:“3.7.10”与 ViZDoom 编译时使用的解释器版本不匹配:3.7.11

我正在使用 Google Colab 结合 TensorFlow(特别是 TF-Agents 库)运行 ViZDoom。大多数情况下,当我使用我的代码启动 Colab 笔记本时,我会收到以下错误:

这发生在我尝试导入 vizdoom 时,在安装了所有依赖项和其他库之后(from vizdoom import *)。

我已经设法让 Colab notebook 正常工作,只需从头开始再次运行它。但是,有时从头开始再次运行它是行不通的。它似乎有助于!python3 --version在所有安装之前添加对解释器版本的检查,但这不应该为安装设置 python 版本。

我还尝试以两种不同的方式安装 ViZDoom,两种方式都显示在下面的完整代码中。两种安装方式都无法始终如一地工作。

为什么解释器版本会发生变化?有没有办法让它保持不变,所以当它随机不工作时我不必重新安装所有东西?

在问题出现之前我正在运行的代码是(每个框都是 Colab 笔记本的一部分):

0 投票
1 回答
101 浏览

python - TF-Agents 错误:TypeError:两个结构不匹配:Trajectory vs. Trajectory

我正在与TF-Agents DQN 教程并排构建 PPO 代理。这个想法是检查一个简单的 tf-agent 工作所需的基本结构,并将其调整为 PPO 代理。

我也在使用自定义环境 ViZDoom。它安装并正常工作。

测试“collect_data”功能时出现错误。这是我正在运行的代码,然后是我得到的错误(底部的完整代码):

我已经尝试过 David Braun 在StackOverflow question中提出的建议。它不起作用(接下来是代码和错误),我真的不明白他为什么这样做来使他的代码工作,而 TF-Agents 的官方教程不需要这样做。无论如何,代码:

和错误:

我注意到两个轨迹中的观察形状不同。它应该是shape=(1, 160, 260, 3),但其中一个观察结果是shape=(1, 1, 160, 260, 3)。我不知道为什么会这样,我应该在哪里尝试解决这个问题,因为我认为这正是大卫·布劳恩的答案的全部内容。

我真的不知道如何继续或尝试什么,我真的被卡住了。有谁知道为什么轨迹显示不同的结构,我该如何解决?

完整代码:

我没有更多代码(教程继续),因为我的应用程序在这里中断。

0 投票
0 回答
32 浏览

tensorflow - 如何加载 SAC tf_agent 的模型?

按照教程https://www.tensorflow.org/agents/tutorials/7_SAC_minitaur_tutorial,我想知道如何加载创建的检查点。

我正在尝试按照本教程https://www.tensorflow.org/agents/tutorials/10_checkpointer_policysaver_tutorial加载检查点,但我现在绝对知道如何使其与 SAC-Agent 一起使用。

检查点通过以下方式保存:

我成功地加载了政策:

因此可以创建一个执行策略的参与者:

不幸的是,我的模拟环境经常崩溃,所以我需要能够加载整个模型并从最后一个检查点继续训练。

0 投票
0 回答
35 浏览

python - 如何获得 tf-agents 中所有动作的概率向量?

我正在研究多臂强盗问题,使用LinearUCBAgentandLinearThompsonSamplingAgent但它们都返回单个动作进行观察。我需要的是可用于排名的所有动作的概率。

0 投票
1 回答
60 浏览

python - tf_agents 没有正确学习简单的环境

我成功地遵循了这个官方 tensorflow 教程来训练代理来解决“CartPole-v0”健身房环境。我与教程的不同之处在于我没有使用reverb,因为 Windows 不支持它。我尝试修改示例以训练代理解决我自己的(非常简单的)环境,但是在 10,000 次迭代后它无法收敛到一个解决方案,我觉得这应该绰绰有余。

我尝试调整训练迭代、学习率、批量大小、折扣以及我能想到的所有其他内容。对结果没有任何影响。

我希望代理收敛于始终获得 +1 奖励的策略(理想情况下只需几百次迭代,因为这个环境非常简单),而不是偶尔下降到 -1 的策略。相反,这是实际结果的图表:

(文字很小,所以我会说橙色是步长,蓝色是平均奖励。X 轴是训练迭代次数,从 0 到 10,000。) 显示次优奖励的图表

代码

这里的一切都是从上到下运行的,但我把它放在单独的代码块中,以便于阅读/调试。

进口

环境。您可能可以跳过阅读整个课程,它通过validate_py_environment就好了,所以我认为这里没有问题。

环境实例

代理创建

政策评估员。您可能可以跳过阅读此内容。我相信这是正确的。

重播缓冲区

培训过程

绘图(与问题无关,仅用于完成)

0 投票
1 回答
62 浏览

python - PPOAgent + Cartpole = ValueError:actor_network 输出规范与操作规范不匹配:

我正在尝试在 CartPole-v1 环境中使用 tf_agents 的 PPOAgent,但在声明代理本身时收到以下错误:

我相信问题是我的网络的输出tf.float32不是tf.int64,但我可能是错的。我不知道如何使网络输出一个整数,据我所知,这是不可能或不希望的。

如果我运行像 MountainCarContinuous-v0 这样的连续环境,我会得到一个不同的错误:

以下是相关代码(主要取自 DQN 教程):

我觉得我必须遗漏一些明显的东西,或者有一个根本的误解,任何和所有的帮助都将不胜感激。我找不到使用中的 PPOAgent 的示例。

0 投票
1 回答
17 浏览

python - 在张量流代理中将状态存储为列表/整数的好处

在 tensorflow 代理的环境教程(https://www.tensorflow.org/agents/tutorials/2_environments_tutorial)中,状态存储为整数。当需要状态时,将其转换为 numpy 数组:

他们这样做有什么理由,而不是直接将状态存储为一个 numpy 数组?所以像这样:

使用第二种方法有什么缺点吗?或者这同样有效吗?

0 投票
0 回答
18 浏览

tensorflow - tf代理中必要的观察向量中的元素标准化?

我有一个关于我自己在 tf 代理中的环境的问题。观察向量包含描述不同类型数据的元素(例如,以秒为单位的时间、以 m/s 为单位的速度、以 m 为单位的距离)。距离从-500到+500的区间,速度在0到+20之间,时间在-10到+10之间。

定义环境时,self._observation_spec需要参数maximumminimum,如 tf-agents 存储库中的环境教程中所述:

与代码片段不同的是,我使用浮点数而不是整数。

现在的问题是,我应该minimum如何maximumself._observation_spec. 我应该将所有值标准化为区间 (0,1) 并使用 0 和 1 作为minimum参数maximum吗?或者我应该只使用 asminimummaximum-500 和 +500 (取自距离间隔)并插入我所有的值而不进行归一化,尽管我的速度和时间元素使用更紧密的间隔?

我对这些行动有同样的问题。但我认为行动和观察的答案是相同的。

提前致谢!

0 投票
0 回答
29 浏览

tensorflow - 如何在 TensorFlow 代理中使用延迟奖励?

我正在为最终产生奖励的农场模拟器游戏开发强化学习解决方案。总结一下我要解决的问题:

  1. 采取行动(种植哪种类型,种植多少等)。
  2. 暂时存储动作和状态(一年中的时间,可用的地块数量)。
  3. 确定奖励(收益)后,将其与动作和状态相匹配。
  4. 使用 (3) 中的数据训练代理。
  5. 从(1)重复。

我查看了对此的引用,但我只能找到https://github.com/tensorflow/agents/issues/529

有人可以帮我设置一个可以在这里使用的重播缓冲区吗?

0 投票
0 回答
49 浏览

python - 尝试将示例中的 TensorFlow 代理应用到自定义环境

我遵循了 TensorFlow 代理教程和多武装老虎机教程,现在我正在尝试从示例中制作一个已经实现的代理,在我自己的环境中工作。基本上我的环境存在 5 个动作和 5 个观察。应用一个动作 i 会导致相同的状态 i。一个动作包含另一个步骤,即通过套接字将该 ID 发送到不同的程序,并解释来自程序的答案以获得奖励。我的环境似乎工作正常,我使用下面的小测试脚本来测试观察和操作功能。我知道这不是一个完整的证明,但表明它至少有效。现在我错过了将观察映射到动作的部分,因此缺少代理与他的策略。我遵循示例的结构,但我在环境中尝试的每个代理都有不同的错误。我似乎将它们错误地应用于我的环境,但无法弄清楚我做错了什么。

我是否无法像说明的那样从示例中应用这些端到端代理之一?我搜索了有关 tensorflow 的所有教程和文档,但没有得到任何答案。我的环境应该足够简单。我似乎错过了一些重要的步骤。


每个代理的错误:


环境:


不同的代理:


测试脚本: