导读
本文就只是关于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
好的,假设你并没有看官方文档,或者说你是接手了别人的代码进行修改。总之,就会遇到以下两个错误:
这都是没有将info
字段赋值为dict
的时候会报的错。
不过,当你看到第二条的时候,再怎么也该发现:info
实际上就是个字典,因为这简直就是在告诉你,info
里面有个属性叫TimeLimit.truncated
。
所以官方文档是最重要的啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!
最后的话
转眼就到新年了,希望虎年的我能记住这教训。
也祝大家新年快乐,也希望大家别像我一样想当然的各种操作,结果还不如查一次官方文档来的快。