关于OpenAI的Gym中的step方法

文章目录

  • 导读
  • Gym的step方法
  • 最后的话

导读

本文就只是关于step方法的参数与返回值的一个小小的学习笔记这也是没有第一时间查官方文档而造成的时间消耗所以这篇博客就是逼自己查一下


Gym的step方法

既然都已经用pip下载了gym,那我们就来看看官方代码中有没有什么注释。

  • 如果你是Windows用户,可以使用文件管理器的搜索功能,或者下载Everything插件,以及华为电脑自带的智慧搜索功能,都能够查询到gym的安装位置
  • 如果你是Linux用户,或者以Linux为基础的各种魔改版本,甚至MacOS,你可以使用find命令搜索;如果你在多个环境下都安装了gym,可以使用后面的中括号里的内容添加搜索条件
find $(pwd) -name 'gym' [| grep 'env_name']

而最核心的顶层代码就是位于gym安装文件夹下的core.py。让我们来看看他是怎么说的。

"""
Run one timestep of the environment's dynamics. When end of episode is
reached, you are responsible for calling `reset()` to reset this
environment's state.

Accepts an action and returns a tuple (observation, reward, done, info).

Args:
  action (object): an action provided by the agent
  Returns:
    observation (object): agent's observation of the current environment
    reward (float) : amount of reward returned after previous action
    done (bool): whether the episode has ended
                 in which case further step() calls will return undefined results
    info (dict): contains auxiliary diagnostic information
                 (helpful for debugging, and sometimes learning)
"""

在这里给出了几个比较关键的点:

  • step方法是在环境中动态运行的一个时间步长,表示智能体决策前与决策后之间的其中一个改变逻辑
  • step方法会返回一个元组(observation, reward, done, info)
  • step方法的参数共四个,分别是
    • 智能体针对当前环境的观测,类型为float
    • 在上一个动作执行完毕后返回的reward总量,类型为bool
    • episode结束标志位;再执行step方法将会返回不确定的结果,类型为dict
    • 包含辅助诊断信息(有助于debug,有时也有助于强化学习过程),类型为object

好的,假设你并没有看官方文档,或者说你是接手了别人的代码进行修改。总之,就会遇到以下两个错误:

  • unhashable type: 'list'

  • 报错位于gym安装文件夹中的wrappers/time_limit.py下的:info["TimeLimit.truncated"] = not done,并提示KeyError

这都是没有将info字段赋值为dict的时候会报的错。

不过,当你看到第二条的时候,再怎么也该发现:info实际上就是个字典,因为这简直就是在告诉你,info里面有个属性叫TimeLimit.truncated

所以官方文档是最重要的啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!


最后的话

转眼就到新年了,希望虎年的我能记住这教训。

也祝大家新年快乐,也希望大家别像我一样想当然的各种操作,结果还不如查一次官方文档来的快。

你可能感兴趣的:(强化学习,python,gym,二次开发)