gpt4 book ai didi

RL基础|如何使用OpenAIGym接口,搭建自定义RL环境(详细版)

转载 作者:撒哈拉 更新时间:2024-11-12 00:46:01 66 4
gpt4 key购买 nike


参考:

  • 官方链接:Gym documentation | Make your own custom environment
  • 腾讯云 | OpenAI Gym 中级教程——环境定制与创建
  • 知乎 | 如何在 Gym 中注册自定义环境?
  • g,写完了才发现自己曾经写过一篇:RL 基础 | 如何搭建自定义 gym 环境

(这篇博客适用于 gym 的接口,gymnasium 接口也差不多,只需详细看看接口定义 魔改一下即可) 。


安装 openai gym:

# pip install gym
import gym
from gym import spaces

需实现两个主要功能:

  • env.__init__()obs = env.reset() 函数;
  • obs, reward, done, info = env.step(action) 函数。

01 env 的初始化与 reset

env.__init__() 函数:

  • 输入是 env 的一些初始化条件,比如环境的地图多大、环境里有多少个金币以及每个金币的位置。如果只训练一个特定的任务,比如在 3×3 地图中吃右上角的一个金币,则这些设置都可以写死,不需要在 env 初始化时传递参数。
  • env.__init__() 函数中,需要定义 self.observation_spaceself.action_space
    • 如果状态空间 / 动作空间是离散的,则使用 spaces.Discrete([space dim])
    • 如果是连续的,则使用 spaces.Box(low=np.array([0,1]), high=np.array([100,50]), dtype=np.float32) ,其中 low high 都要符合状态空间 / 动作空间的维度,分别代表每一维的最大最小值。
    • 连续空间也可以使用 spaces.Box(low=0, high=255, shape=(84, 84), dtype=np.uint8) 这种形式,其中空间的每个维度具有相同的最大最小值,shape 表示空间的维度。
    • gym.spaces 的具体使用:官方文档 Gym documentation | Spaces , 知乎 | Gym 中 Spaces 浅入浅出的理解 。
  • 可以在 env.__init__() 函数的最后调用一下 env.reset() 函数。

obs = env.reset() 函数:

  • 作用是初始化环境,比如把 agent 放到地图左下角,金币放在地图右上角,内置的计步器 reset 到 0 之类。
  • 它的返回值 obs,应该是一个与状态空间维度相同的 np.ndarray。

02 与环境交互的 step 函数

obs, reward, done, info = env.step(action) 函数:

  • 输入 action,应该是一个与动作空间维度相同的 np.ndarray。(一般的环境应该不支持批量输入 action,即 action.shape = (batch_size, action_dim)
  • step 函数被用在 agent 与 env 的交互;env 接收到输入的动作 action 后,内部进行一些状态转移,输出:
    • 新的状态 obs:与状态空间维度相同的 np.ndarray;
    • reward:奖励值,实数;
    • done:bool 值,True 代表这个 episode 已经跑完(比如 agent 吃到了金币,或 agent 已经走完了 1000 步)(此时该 reset 了),False 则代表这个 episode 还没跑完。
    • info:python 的字典(dict),可以传递一些信息,没有信息传递则可以设成 {}

03 高级用法

  • env.__init__(render_mode="human" or "rgb_array") 以及 rgb_frame = env.render() 。render mode = human 好像可以使用 pygame,rgb frame 则是直接输出(比如说)shape = (256, 256, 3) 的 frame,可以用 imageio 保存成视频。
  • 如何注册 gym 环境:RL 基础 | 如何注册自定义 gym 环境


最后此篇关于RL基础|如何使用OpenAIGym接口,搭建自定义RL环境(详细版)的文章就讲到这里了,如果你想了解更多关于RL基础|如何使用OpenAIGym接口,搭建自定义RL环境(详细版)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com