本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-08(31)

2020-09(69)

强化学习之Gym

发布于2021-06-12 12:16     阅读(662)     评论(0)     点赞(12)     收藏(5)



强化学习之Gym

  • 它是一个开发、比较各种强化学习算法的工具库,提供了不少内置的环境,是学习强化学习不错的一个平台,gym库的一个很大的特点是可以可视化,把强化学习算法的人机交互用动画的形式呈现出来,这比仅依靠数据来分析算法有意思多了。
  • 用pip安装
source activate gymlab
pip install gym
  • 测试
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
    env.render()
    env.step(env.action_space.sample()) # take a random action
env.close()
pip install mujoco_py==2.0.2.8
pip3 install -U 'mujoco-py<2.1,>=2.0'
  • env环境

CartPole-v0、MountainCar-v0,MsPacman-v0(需要 Atari dependency依赖项)或Hopper-v1(需要MuJoCo依赖项)。所有环境均来自Env基类。

env = gym.make('CartPole-v0')
# 一次尝试我们称之为一条轨迹或一个episode. 每次尝试都要到达终止状态. 一次尝试结束后,智能体需要从头开始,这就需要智能体具有重新初始化的功能。函数reset()就是这个作用。
env.reset()
env.render()
env.step()
env.close()

Classic control和toy text:完成小规模任务,大部分来自RL文献。
他们是来帮你开始的。

Algorithmic:执行计算,如添加多位数和反转序列。
有人可能会反对这些任务对于计算机来说很容易。挑战在于纯粹从示例中学习这些算法。这些任务具有很好的性质,通过改变序列长度很容易改变难度。

Atari:玩经典的Atari游戏。我们已经将Arade学习环境(它对强化学习研究产生了很大的影响)集成在一个易于安装的表单中。

2D和3D机器人:在模拟中控制机器人。这些任务使用MuJoCo物理引擎,该引擎专为快速和准确的机器人仿真而设计。其中包括加州大学伯克利分校研究人员(顺便说一句,今年夏天将加入我们)最近的基准测试中的一些环境。MuJoCo是专有软件,但提供免费试用许可证。

  • 将您自己的环境添加到注册表中非常容易,从而使它们可用于gym.make():只需在加载时register()即可。

  • 可以对register进行改写:

    register(
        id='CartPole-v2',
        entry_point='gym.envs.classic_control:CartPoleEnv',
        max_episode_steps=200*4,
        reward_threshold=195.0*4,
    )
    env = gym.make('CartPole-v2')
    
  • gym自定义可视化环境基础(主要继承ENV类)

  • 行动
    环境的step函数完全返回我们需要的东西。实际上,step根据action返回四个值。这些是:

observation, reward, done, info = env.step(action)

observation(object):特定于环境的对象,代表您对环境的观察。例如,来自摄像机的像素数据,机器人的关节角度和关节速度或棋盘游戏中的棋盘状态。

reward(float):上一操作获得的奖励金额。规模因环境而异,但目标始终是增加总奖励。

done(boolean):是否需要再次重置环境。大多数(但不是全部)任务被分为定义明确的情节,并且如果done为True,则表示情节已终止。 (例如,也许杆子倾斜得太远,或者你失去了你的最后一条生命。)

info(dict):诊断信息,可用于调试。它有时对学习很有用(例如,它可能包含环境上次状态更改背后的原始概率)。但是,您的代理人的官方评估不允许将其用于学习。

这只是经典“agent-environment loop(代理-环境循环)”的实现。
每个时间步,代理选择一个action(动作),环境返回一个observation(观察)和reward(奖励)。
在这里插入图片描述

  • Spaces
    每个环境都有一个action_space和一个observation_space。这些属性的类型为Space
    • env.action_space, 有效操作,离散空间允许固定范围的非负数,因此在这种情况下有效操作为0或1。
    #> Discrete(2)
    
    • env.observation_space,观察的格式,Box空间表示n维框,因此有效观测值将是4个数字的数组。我们还可以检查框的边界:
    #> Box(4,)
    print(env.observation_space.high)
    

#> array([ 2.4 , inf, 0.20943951, inf])
print(env.observation_space.low)
#> array([-2.4 , -inf, -0.20943951, -inf])
```

原文链接:https://blog.csdn.net/sinat_28375239/article/details/117509605






所属网站分类: 技术文章 > 博客

作者:Python厉害了

链接:https://www.pythonheidong.com/blog/article/984138/6b465e04c6fb0412b8e7/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

12 0
收藏该文
已收藏

评论内容:(最多支持255个字符)