如何在OpenAI中创建新的健身房环境?

2023-12-23

我的任务是制作一个 AI 代理,该代理将学习使用 ML 玩视频游戏。我想使用 OpenAI Gym 创建一个新环境,因为我不想使用现有环境。如何创建新的自定义环境?

另外,我是否可以通过其他方式开始开发 AI 代理来玩特定的视频游戏,而无需 OpenAI Gym 的帮助?


See my banana-gym https://github.com/MartinThoma/banana-gym适用于极小的环境。

创建新环境

查看存储库的主页:

https://github.com/openai/gym/blob/master/docs/creating_environments.md https://github.com/openai/gym/blob/master/docs/creating_environments.md

步骤是:

  1. 创建具有 PIP 包结构的新存储库

它应该看起来像这样

gym-foo/
  README.md
  setup.py
  gym_foo/
    __init__.py
    envs/
      __init__.py
      foo_env.py
      foo_extrahard_env.py

有关其内容,请点击上面的链接。没有提到的细节特别是一些功能如何foo_env.py应该看起来像。查看示例并查看gym.openai.com/docs/ https://gym.openai.com/docs/有帮助。这是一个例子:

class FooEnv(gym.Env):
    metadata = {'render.modes': ['human']}

    def __init__(self):
        pass

    def _step(self, action):
        """

        Parameters
        ----------
        action :

        Returns
        -------
        ob, reward, episode_over, info : tuple
            ob (object) :
                an environment-specific object representing your observation of
                the environment.
            reward (float) :
                amount of reward achieved by the previous action. The scale
                varies between environments, but the goal is always to increase
                your total reward.
            episode_over (bool) :
                whether it's time to reset the environment again. Most (but not
                all) tasks are divided up into well-defined episodes, and done
                being True indicates the episode has terminated. (For example,
                perhaps the pole tipped too far, or you lost your last life.)
            info (dict) :
                 diagnostic information useful for debugging. It can sometimes
                 be useful for learning (for example, it might contain the raw
                 probabilities behind the environment's last state change).
                 However, official evaluations of your agent are not allowed to
                 use this for learning.
        """
        self._take_action(action)
        self.status = self.env.step()
        reward = self._get_reward()
        ob = self.env.getState()
        episode_over = self.status != hfo_py.IN_GAME
        return ob, reward, episode_over, {}

    def _reset(self):
        pass

    def _render(self, mode='human', close=False):
        pass

    def _take_action(self, action):
        pass

    def _get_reward(self):
        """ Reward is given for XY. """
        if self.status == FOOBAR:
            return 1
        elif self.status == ABC:
            return self.somestate ** 2
        else:
            return 0

使用您的环境

import gym
import gym_foo
env = gym.make('MyEnv-v0')

Examples

  1. https://github.com/openai/gym-soccer https://github.com/openai/gym-soccer
  2. https://github.com/openai/gym-wikinav https://github.com/openai/gym-wikinav
  3. https://github.com/alibaba/gym-starcraft https://github.com/alibaba/gym-starcraft
  4. https://github.com/endgameinc/gym-malware https://github.com/endgameinc/gym-malware
  5. https://github.com/hackthemarket/gym-trading https://github.com/hackthemarket/gym-trading
  6. https://github.com/tambetm/gym-minecraft https://github.com/tambetm/gym-minecraft
  7. https://github.com/ppaquette/gym-doom https://github.com/ppaquette/gym-doom
  8. https://github.com/ppaquette/gym-super-mario https://github.com/ppaquette/gym-super-mario
  9. https://github.com/tuzzer/gym-maze https://github.com/tuzzer/gym-maze
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在OpenAI中创建新的健身房环境? 的相关文章

  • Altair 中具有自定义置信区间的折线图

    假设我有下面的数据框 我检查了文档 https altair viz github io gallery line with ci html但它仅基于单个列 可重现的代码 x np random normal 100 5 100 data
  • Tensorflow:np数组的next_batch函数

    我的火车数据为 xTrain numpy asarray 100 1 5 6 yTrain numpy asarray 200 2 10 12 如何定义 next batch size 方法以从训练数据中获取随机元素的 size 个数 您可
  • 具有多个输入的 Keras TimeDistributed 层

    我正在尝试使以下代码行正常工作 low encoder out TimeDistributed AutoregressiveDecoder X tf embeddings Where AutoregressiveDecoder是一个需要两个
  • PyTorch 中的连接张量

    我有一个张量叫做data形状的 128 4 150 150 其中 128 是批量大小 4 是通道数 最后 2 个维度是高度和宽度 我有另一个张量叫做fake形状的 128 1 150 150 我想放弃最后一个list array从第 2 维
  • 人体的宽度和高度

    如何识别图像中人体的高度和宽度 你需要一些参考点 除非您知道相机设置 位置 变焦 镜头畸变等 以及人相对于相机的位置 否则简单的照片是不够的 如果您确实有参考 例如背景中的网格或其他东西 那么您可以测量网格并从那里开始 听起来不像你需要的
  • R 中多类分类的 ROC 曲线

    我有一个包含 6 个类别的数据集 我想绘制多类别分类的 ROC 曲线 Achim Zeileis 给出的第一个答案非常好 R中使用rpart包的ROC曲线 https stackoverflow com questions 30818188
  • Tensorflow 的 LSTM 输入

    I m trying to create an LSTM network in Tensorflow and I m lost in terminology basics I have n time series examples so X
  • 支持向量机或人工神经网络进行文本处理? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于某些文本处理项目 我们需要在支持向量机和快速人工神经网络之间做出选择 它包括上下文拼写纠正 然后将文本标记为某些短语及其同义词 哪种方
  • 随机森林修剪

    我有 sklearn 随机森林回归器 它非常重 有 1 6 GB 并且在预测值时工作很长时间 我想把它修剪一下 让它变得更轻 据我所知 决策树和森林没有实施修剪 我无法自己实现它 因为树代码是用 C 编写的 而我不知道 有谁知道解决方案吗
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序
  • 如何在google Colab中渲染OpenAIgym? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试在 Google Colab 中使用 OpenAI Gym 由于笔记本在远程服务器上运行 我无法渲染健身房的环境 我找到了一
  • 当训练和测试的特征数量不同时,如何处理生产环境中的One-Hot Encoding?

    在做某些实验时 我们通常在 70 上进行训练 在 33 上进行测试 但是 当您的模型投入生产时会发生什么 可能会发生以下情况 训练集 Ser Type Of Car 1 Hatchback 2 Sedan 3 Coupe 4 SUV 经过
  • 将姓名拆分为名字和姓氏 Java(Android OCR)[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我使用本机 Android JAVA 创建了一个 OCR 光学字符识别 应用程序 我可以将图像转换为文本视图 但是我如何使用这些词分别识别名
  • ValueError:没有为“dense_input”提供数据

    我正在使用以下简单的代码使用tensorflow加载csv并使用keras执行建模 无法弄清楚这个错误 import tensorflow as tf train dataset fp tf keras utils get file fna
  • 在 GPU 支持下对高维数据进行更快的 Kmeans 聚类

    我们一直在使用 Kmeans 来对日志进行聚类 典型的数据集有 10 mill 具有 100k 特征的样本 为了找到最佳 k 我们并行运行多个 Kmeans 并选择轮廓得分最佳的一个 在 90 的情况下 我们最终得到的 k 介于 2 到 1
  • ValueError:请使用“Layer”实例初始化“TimeDistributed”层

    我正在尝试构建一个可以在音频和视频样本上进行训练的模型 但出现此错误ValueError Please initialize TimeDistributed layer with a Layer instance You passed Te
  • 为什么LeNet5使用32×32图像作为输入?

    我知道mnist数据集中的手写数字图像是28 28 但是为什么LeNet5中的输入是32 32 您的问题已在原纸 http yann lecun com exdb publis pdf lecun 98 pdf 卷积步骤始终采用比前一层的特
  • 使用 NLTK 在 Python 中获取大量名词(或形容词);或 Python Mad Libs

    Like 这个问题 https stackoverflow com questions 7439555 noun adjective etc word lists or dictionaries common words 我有兴趣按词性获取
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另

随机推荐

  • Haskell 中的异常处理

    我需要帮助来理解三个 Haskell 函数的用法 try Control Exception try Exception e gt IO a gt IO Either e a catch Control Exception catch Ex
  • AngularJS 中使用 q 的多个链式延迟函数停止返回数据

    我试图将多个延迟函数调用链接在一起 以便下一个调用可以获得前一个 deferred resolve 的结果 当我将两个以上的调用链接在一起时 数据将停止返回 这是角度控制器内的基本代码 scope runAsync function var
  • 不同应用程序的相同密钥库[重复]

    这个问题在这里已经有答案了 我对所有已发布的应用程序始终使用相同的密钥库和相同的别名密钥 这是一个正确的选择 或者我应该为每个发布的应用程序使用不同的别名吗 我还没有找到有关正确使用密钥库的真正明确的信息 密钥库文件或应用程序的签名表示某些
  • Helm 3.0.2 试运行 + 稳定/prometheus-operator?这应该有效吗?

    使用 Helm v3 0 2 新的 Kubernetes v1 14 9 集群 仅供参考 我已经添加了稳定的存储库 helm repo add stable https kubernetes charts storage googleapi
  • JavaScript 将 HTML 表格导出到 Excel

    我需要 JavaScript 将 HTML 表格导出到 Excel 我已经尝试过这个脚本 但它只导出一张表
  • Laravel Eloquent ORM 中的自然 ORDER

    我如何在 Eloquent ORM 中获得 自然顺序 在表中我有 文本 列 字符串 正常顺序 Model orderBy text value 1 value 12 value 23 value 3 value 8 我需要这个 value
  • 运行 django 本地服务器时出错:`__init__() 得到意外的关键字参数 'tcp_nodelay'`

    一切都很好并且始终运行没有问题 现在 当我从浏览器加载应用程序时出现错误 似乎与代码无关 因为我跳到了最旧的分支上 并且得到了相同的错误 这是我的 python 和 django 版本 python version Python 3 6 0
  • 进行带有超时的 EJB 调用

    我有一个EJBA调用 EJBB UI 等待响应的时间不应超过 30 秒 如果某些数据丢失 它应该返回部分响应 如何在 EJB 上定义超时 30 秒的时间限制 B 我可以定义EJBB as Asynchronous返回Future 然后做Fu
  • 如何将嵌入/嵌套 FormGroup 转换为 FormData

    这是我的表格组 this shopGroup this fb group user name Validators compose Validators required Validators maxLength 60 url name d
  • C# - 文件关联对注册表项“HKEY_CLASSES_ROOT\”的访问被拒绝

    我目前有一个使用注册表设置文件关联的程序 注意 它是 NET 2 0 所以我必须通过注册表方法 问题是 由于它正在尝试写入 HKCR 因此可能会遇到管理问题 在其他计算机上 是否有更通用的方法来设置文件关联 对于 NET 2 0 例如使用
  • 无法将本地更改推送到现有远程分支

    有一个名为 my remote 的远程分支 我之前已毫无问题地推送到该分支 截至今天 我无法推动并且出现不同的错误 我得到的第一个错误是 hint Updates were rejected because a pushed branch
  • 无法文本对齐:CSS 居中

    我似乎无法将 主页 按钮置于中央 主文本位于左侧而不是中心 我的 htm 和 css 链接如下 html h1 Bully Free Zone h1 h2 Online harassment has an off line impact h
  • 打字稿 |每次调用函数时都会调用一个函数

    我正在尝试编写 Typescript API 服务 对于该服务 我需要一种方法来检查该方法是否存在 例如函数get叫做 我意识到我可以这样做 get endpoint string this handleRequest post endpo
  • 调整 UIWebView 文本大小

    我试图让用户调整给定网页的文本大小 我在 Xcode 6 中使用 Swift HTML 文件 h1 My First Heading h1 My first paragraph 这是我调用的快速函数来尝试更改大小 func changeWe
  • 如何使用Monitor(DDMS)工具调试应用程序

    这些天我正在将开发环境从 Eclipse 切换到 Android Studio 我真的很喜欢它的自动完成功能以及这个 IDE 提供的许多其他功能 但是 我在调试时遇到了一些问题 我希望使用这个IDE提供的Monitor工具 自带的DDMS和
  • 在单元测试中抑制 Vue 警告

    我试图按照此处列出的配置在测试中抑制警告 https vue test utils vuejs org api config html silent https vue test utils vuejs org api config htm
  • JavaFX 制作相同动画的副本

    我正在尝试扩展之前的作业 它是画一个风扇 并有一个滑块来控制播放速度 以及播放 暂停和反转风扇的按钮 这是我的该作业的代码 public class FanWithControls extends Application Override
  • 500 HTTP POST 请求的内部错误

    我正在使用下面的代码使用 HTTP POST 上传文件 但我从服务器收到 500 内部服务器错误响应 您能看一下并让我知道哪个代码部分是罪魁祸首 丢失的吗 HTTPS 连接没有错误 我认为标头存在问题 因此服务器不接受此请求 Check s
  • PHP/MYSQL AJAX 聊天

    寻找一个开源的php mysql ajax聊天室 不是1对1的私人聊天 你们会推荐什么 我将需要创建数百个聊天室实例 例如 每个用户组都有自己的专属聊天室 看看 phpFreeChat 这是一个易于实施的活跃项目 http www phpf
  • 如何在OpenAI中创建新的健身房环境?

    我的任务是制作一个 AI 代理 该代理将学习使用 ML 玩视频游戏 我想使用 OpenAI Gym 创建一个新环境 因为我不想使用现有环境 如何创建新的自定义环境 另外 我是否可以通过其他方式开始开发 AI 代理来玩特定的视频游戏 而无需