问题标签 [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 - TF-Agents 自定义环境应急行动
对仅允许来自某些状态的动作进行编码的惯用方式是什么?
例如,您有四个操作:
- 翻牌
- 结束
- 保留翻转的卡片
- 不要保留翻转的卡片
如果你把它想象成一个状态机,那么每个动作都是一个转换。
游戏开始时,您只能执行动作 1 或 2。
如果您处于卡片正面朝上的状态(您已完成操作 2),您只能执行操作 3 或 4,这会将您带回原始状态。
我希望我需要使用代理可以观察到的内容对其进行编码,但是是什么阻止了代理从开始状态尝试 3/4 的动作,这只是一个糟糕的奖励?
有人对如何完成此操作或此类环境的示例有任何提示吗?
tensorflow - 基于 TensorFlow 中的状态限制 RL 动作空间
我正在通过 TF Agents 软件包感受到软演员评论家的感觉。我遇到了一个问题,即政策正在为环境应该建模的内容输出不可能的行动(金融交易所;政策试图购买/出售更多的东西),并且不知道如何实际解决它.
为此类行为设置一个极其负面的奖励并没有帮助——通常,溢出发生在模型意识到它的错误之前。
有没有一种通用的方法可以使连续动作空间的边界取决于当前的环境状态?如果没有,解决方法是什么?
python - 绘制多臂强盗的奖励值
如何在具有每臂特征的多臂强盗上绘制来自 Tensorflow(带有完整代码)的此示例的每次迭代的奖励值?
本教程有一个带图的遗憾指标:
我最终会喜欢这样的情节,但随着迭代的奖励显示它们在增加;我该如何去修改代码来做到这一点?
python - 为什么当我将 cartpole 环境换成我自己的(更简单的)环境时,TensorFlow Agents 的内置 DQN 教程无法学习?
我正在尝试训练一个几乎完全按照 TensorFlow Agents 的DQN 教程建模的 DQN 代理。而不是cartpole,我希望它学习一个简单的游戏,其中电池可以买卖电力,因为价格每12个时间步长在1到2之间变化(12个1,12个2,12个1,......)。电池可容纳 10 个单位的电量。最优策略是在价格为 1 时买入,在价格为 2 时卖出。我所做的只是添加这个单元格来导入我写的环境:
这是环境:
在 Colab 中运行 Cartpole 教程,该算法只需几百次迭代即可找到最佳策略。我还提取了 Q 值;该图显示了最后 24 个训练时间步长:
对于我的问题,即使经过 20,000 次迭代,Q 值也很少有意义(我希望“充电”和“放电”曲线像镜像方波一样交替出现):
我尝试过改变网络的大小,使用不同的学习率、epsilon 值、优化器等。似乎没有任何效果。即使不更改参数,每次运行看起来都不同。
我的主要问题是:为什么算法足够强大来解决cartpole,但无法在这个更简单的环境中学习?我错过了一些基本的东西吗?
tensorflow - 是否有一个很好的多臂强盗与银行的张量流示例?
我一直在研究一些 Tensorflow 代理示例,并且想知道是否有人知道如何/在何处将银行/存储添加到环境中的一个很好的示例,以便如果代理用完资金,这一集会提前结束?
似乎将逻辑添加到重置功能将是一个不错的选择,但评论似乎相当坚决不这样做。
我最初的想法是做类似的事情:
从 _take_action(...) 中其他地方定义的银行减去。这似乎可以运行,但我一直在阅读一些文档,但我不确定它的行为方式是否与我认为的一样。这是将银行添加到 MAB 问题的适当方法吗?
python - actor_network 输出规范与动作规范不匹配:TensorSpec(...) 与 BoundedTensorSpec(...)
我正在尝试创建一个参与者策略,它是一个使用 tf_agents 将观察(状态空间)映射到动作(动作空间)的神经网络。以下是我的实现(深受他们的教程启发:https ://www.tensorflow.org/agents/tutorials/3_policies_tutorial )
我收到以下错误:
这基本上是说我的神经网络的输出不是有界张量。如何将神经网络的输出转换为有界张量。在我的例子中,由于我希望输出在 0 到 9 之间,我只是将 sigmoid 输出乘以 9 并将数字四舍五入。这不起作用,因为类型仍然是无界张量。
非常感谢
python-3.x - 使用 tf_agents.environments.TFPyEnvironment 将 Python RL 环境转换为 TF 环境时会发生哪些变化?
我注意到在使用 tf_agents.environments.TFPyEnvironment 将 Python 环境转换为 TF 环境时发生了一些奇怪的事情,我想问你发生了哪些一般性变化。
为了澄清这个问题,请在我的代码下面找到。我希望环境模拟(以一种过于简单的方式)与想要购买水果或蔬菜的顾客的互动。代理应该知道,当客户要水果时,例如应该执行动作 0。
当我执行以下代码以检查一切是否正常时:
我得到了一个不可散列的类型:'numpy.ndarray',condition = basket in self.dictionary[action]
所以我把它改成了它condition = basket in self.dictionary[int(action)]
,它工作得很好。我还想准确地说,即使不添加int
部件,它也可以作为 Python 环境工作。所以我想问一下tf_agents.environments.TFPyEnvironment有什么变化。我看不出它如何影响动作的类型,action
因为它与action_spec
任何东西无关(至少直接在代码中)。
python - 为什么我观察到的张量形状从 time_step_spec() 的返回变为 step(action) 的返回?
我正在尝试从 Python 环境开始模拟 RL 环境,然后通过使用tf_py_environment
. 我注意到我的环境步骤时间规范是:
但是当我执行 step 方法时,我会得到以下格式的结果:
除了添加了两个维度的观察之外,所有内容都添加了一个维度。
这是我的环境的代码:
我创建了这样的 TF 环境:
我想问你为什么要添加其他维度以及最终如何摆脱它们,特别是对于观察,因为我们有两个额外的维度。
先感谢您。
python - Tf-agents 环境示例中 _observation_spec 的形状和 _action_spec 的形状
在TF-Agents Environments 的 tensorflow 文档中,有一个简单(受二十一点启发)纸牌游戏的环境示例。
初始化如下所示:
动作规范只允许 0(不要求卡片)或 1(要求卡片),因此形状是shape=()
(只需要一个整数)是明智的。
但是我不太明白观察规范的形状是shape=(1,)
,因为它只代表当前回合中牌的总和(所以也是一个整数)。
什么解释了形状的差异?
python - 如何在 step 方法中为 TF-Agents 环境提供一组动作?
我想对我的环境进行建模,使每个动作都由 3 个可能的子动作组成。
我将我的定义_action_spec
为tf_agents.environments.py_environment.PyEnvironment
:
我的step
方法失败了,我正在尝试:
但它给ValueError: cannot select an axis to squeeze out which has size not equal to one
我应该如何为step
方法提供操作?