问题标签 [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.
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 笔记本的一部分):
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)。我不知道为什么会这样,我应该在哪里尝试解决这个问题,因为我认为这正是大卫·布劳恩的答案的全部内容。
我真的不知道如何继续或尝试什么,我真的被卡住了。有谁知道为什么轨迹显示不同的结构,我该如何解决?
完整代码:
我没有更多代码(教程继续),因为我的应用程序在这里中断。
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 一起使用。
检查点通过以下方式保存:
我成功地加载了政策:
因此可以创建一个执行策略的参与者:
不幸的是,我的模拟环境经常崩溃,所以我需要能够加载整个模型并从最后一个检查点继续训练。
python - 如何获得 tf-agents 中所有动作的概率向量?
我正在研究多臂强盗问题,使用LinearUCBAgent
andLinearThompsonSamplingAgent
但它们都返回单个动作进行观察。我需要的是可用于排名的所有动作的概率。
python - tf_agents 没有正确学习简单的环境
我成功地遵循了这个官方 tensorflow 教程来训练代理来解决“CartPole-v0”健身房环境。我与教程的不同之处在于我没有使用reverb,因为 Windows 不支持它。我尝试修改示例以训练代理解决我自己的(非常简单的)环境,但是在 10,000 次迭代后它无法收敛到一个解决方案,我觉得这应该绰绰有余。
我尝试调整训练迭代、学习率、批量大小、折扣以及我能想到的所有其他内容。对结果没有任何影响。
我希望代理收敛于始终获得 +1 奖励的策略(理想情况下只需几百次迭代,因为这个环境非常简单),而不是偶尔下降到 -1 的策略。相反,这是实际结果的图表:
(文字很小,所以我会说橙色是步长,蓝色是平均奖励。X 轴是训练迭代次数,从 0 到 10,000。)
代码
这里的一切都是从上到下运行的,但我把它放在单独的代码块中,以便于阅读/调试。
进口
环境。您可能可以跳过阅读整个课程,它通过validate_py_environment
就好了,所以我认为这里没有问题。
环境实例
代理创建
政策评估员。您可能可以跳过阅读此内容。我相信这是正确的。
重播缓冲区
培训过程
绘图(与问题无关,仅用于完成)
python - PPOAgent + Cartpole = ValueError:actor_network 输出规范与操作规范不匹配:
我正在尝试在 CartPole-v1 环境中使用 tf_agents 的 PPOAgent,但在声明代理本身时收到以下错误:
我相信问题是我的网络的输出tf.float32
不是tf.int64
,但我可能是错的。我不知道如何使网络输出一个整数,据我所知,这是不可能或不希望的。
如果我运行像 MountainCarContinuous-v0 这样的连续环境,我会得到一个不同的错误:
以下是相关代码(主要取自 DQN 教程):
我觉得我必须遗漏一些明显的东西,或者有一个根本的误解,任何和所有的帮助都将不胜感激。我找不到使用中的 PPOAgent 的示例。
python - 在张量流代理中将状态存储为列表/整数的好处
在 tensorflow 代理的环境教程(https://www.tensorflow.org/agents/tutorials/2_environments_tutorial)中,状态存储为整数。当需要状态时,将其转换为 numpy 数组:
他们这样做有什么理由,而不是直接将状态存储为一个 numpy 数组?所以像这样:
使用第二种方法有什么缺点吗?或者这同样有效吗?
tensorflow - tf代理中必要的观察向量中的元素标准化?
我有一个关于我自己在 tf 代理中的环境的问题。观察向量包含描述不同类型数据的元素(例如,以秒为单位的时间、以 m/s 为单位的速度、以 m 为单位的距离)。距离从-500到+500的区间,速度在0到+20之间,时间在-10到+10之间。
定义环境时,self._observation_spec
需要参数maximum
和minimum
,如 tf-agents 存储库中的环境教程中所述:
与代码片段不同的是,我使用浮点数而不是整数。
现在的问题是,我应该minimum
如何maximum
在self._observation_spec
. 我应该将所有值标准化为区间 (0,1) 并使用 0 和 1 作为minimum
参数maximum
吗?或者我应该只使用 asminimum
和maximum
-500 和 +500 (取自距离间隔)并插入我所有的值而不进行归一化,尽管我的速度和时间元素使用更紧密的间隔?
我对这些行动有同样的问题。但我认为行动和观察的答案是相同的。
提前致谢!
tensorflow - 如何在 TensorFlow 代理中使用延迟奖励?
我正在为最终产生奖励的农场模拟器游戏开发强化学习解决方案。总结一下我要解决的问题:
- 采取行动(种植哪种类型,种植多少等)。
- 暂时存储动作和状态(一年中的时间,可用的地块数量)。
- 确定奖励(收益)后,将其与动作和状态相匹配。
- 使用 (3) 中的数据训练代理。
- 从(1)重复。
我查看了对此的引用,但我只能找到https://github.com/tensorflow/agents/issues/529。
有人可以帮我设置一个可以在这里使用的重播缓冲区吗?
python - 尝试将示例中的 TensorFlow 代理应用到自定义环境
我遵循了 TensorFlow 代理教程和多武装老虎机教程,现在我正在尝试从示例中制作一个已经实现的代理,在我自己的环境中工作。基本上我的环境存在 5 个动作和 5 个观察。应用一个动作 i 会导致相同的状态 i。一个动作包含另一个步骤,即通过套接字将该 ID 发送到不同的程序,并解释来自程序的答案以获得奖励。我的环境似乎工作正常,我使用下面的小测试脚本来测试观察和操作功能。我知道这不是一个完整的证明,但表明它至少有效。现在我错过了将观察映射到动作的部分,因此缺少代理与他的策略。我遵循示例的结构,但我在环境中尝试的每个代理都有不同的错误。我似乎将它们错误地应用于我的环境,但无法弄清楚我做错了什么。
我是否无法像说明的那样从示例中应用这些端到端代理之一?我搜索了有关 tensorflow 的所有教程和文档,但没有得到任何答案。我的环境应该足够简单。我似乎错过了一些重要的步骤。
每个代理的错误:
环境:
不同的代理:
测试脚本: