首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openai健身房-什么是我可以使用的多离散动作空间的代理?

openai健身房-什么是我可以使用的多离散动作空间的代理?
EN

Data Science用户
提问于 2019-07-03 19:11:12
回答 2查看 4.3K关注 0票数 2

我有一个有多个离散动作空间的定制环境。

行动和观察空间如下:

操作:

代码语言:javascript
复制
MultiDiscrete([  3 121 121 121   3 121 121 121   3 121 121 121   3 121 121 121   3 121
 121 121   3 121 121 121   3 121 121 121   3 121 121 121   3 121 121 121
   3 121 121 121   3 121 121 121   3 121 121 121   3 121 121 121   3 121
 121 121   3 121 121 121   3 121 121 121   3 121 121 121])

观察:

代码语言:javascript
复制
MultiDiscrete([100   3   2 121   2 121   2 121   2 121   2 121   2 121   2 121   2 121
   2 121   2 121   2 121   2 121   2 121   2 121   2 121   2 121   2 121
   2 121   2 121   2 121   2 121   2 121   2 121   2 121   2 121   2 121
   2 121   2 121   2 121   2 121   2 121   2 121   2 121   2 121   2 121
 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121
 121 121 121 121 121 121 121 121 121 121 121 121 121 121 121])

我很难找到一个能够处理这些空间的代理(例如keras-rl)。

这个问题:https://github.com/keras-rl/keras-rl/issues/224表示keras-rl DDPG代理能够处理多个离散的操作空间,但是模型有一个浮点输出,我不能将它用作step()函数的操作,它需要一个整数输出!

大多数其他代理似乎使用tanh激活层,或者使用一些生成二进制输出的层。我需要一个与我的动作空间相同形状的输出。

如何处理这件事?

EN

回答 2

Data Science用户

回答已采纳

发布于 2019-08-27 07:19:14

OpenAI基线--或者对我来说更好,更稳定的基线--有许多模型选项,可以处理MultiDicrete操作和/或观察空间。建立一个定制的健身房环境也是相当简单的。

票数 2
EN

Data Science用户

发布于 2021-04-20 13:12:37

假设现在您的空间定义如下

代码语言:javascript
复制
n_actions = (10, 20, 30)
action_space = MultiDiscrete(n_actions)

在环境方面,一个简单的解决方案是将空间定义为

代码语言:javascript
复制
action_space = Discrete(np.prod(n_actions))

,然后借助np.ndindex将一个离散动作转换为相应的多离散动作。

代码语言:javascript
复制
mapping = tuple(np.ndindex(n_actions))
multidiscrete_action = mapping[discrete_action]
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/55005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档