• Gym


    Gym

    用于研发与比较强化学习算法的工具。

     

    安装

    pip install gym

     

    环境

    车杆问题,模型栗子CartPole-v0

    env.step() ,传入0,1,表示车向左,右给1牛顿的力,现在要平衡这个车。

    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

    我们可以尝试一下,01010101,现实生活中,会让这根杆转起来,当然这不是我们平衡这个车的目标咯。

    import numpy as np
    import random
    import gym
    ​
    env = gym.make('CartPole-v0')
    env.reset()
    s = 0
    for _ in range(1000):
        env.render()
        env.step(s^1)
        s^=1

    当然,我们可以切换场景,gym最重要的就是训练环境,有很多,有登山,走路的等等。

     

    为达到我们平衡这个车杆的目标,我们可以设计我们自己的算法,当然我们需要知道当前车的状态,实际上step返回值有四个,包含了深度学习的常用概念。

    • observation :环境对象,和你选的环境有关,例如你选的机器人训练环境,他就是机器人的关节等信息。

    • reward:通过前面的action,你得到的奖励。(大小不一定和模型选择相关)

    • done:游戏是否结束,(例如杆的角度倾斜太大了)

    • info:用于调试的信息,然而,官方环境不允许使用。

    这就是Gym的经典的"agent-environment loop" (代理环境循环)。如图所示:

    这个过程,首先reset(),返回一个环境对象。程序必须接受done方法,当满足done游戏结束标记,程序就退出。

    【注】 render()重新绘制环境的一帧

    import gym
    env = gym.make('CartPole-v0')
    for i_episode in range(20):
        observation = env.reset()
        for t in range(100):
            env.render()
            print(observation)
            action = env.action_space.sample()
            observation, reward, done, info = env.step(action)
            if done:
                print("Episode finished after {} timesteps".format(t+1))
                break

     

    【注】这里我们打印了observation环境特性对象。

    其含义,小车的位置,小车的速度,木棒的角度,木棒的速度。

     

    • Spaces(空间)

    每一个环境都有 action_space,observation_space,他们的类型是Space,可以打印出来他们的属性。

    import gym
    env = gym.make('CartPole-v0')
    print(env.action_space)
    #> Discrete(2)
    print(env.observation_space)
    #> Box(4,)

    Discrete空间允许随机确定的非负数,在这个案例中就是0,1。Box空间代表问题的n维空间。我们查看一下他的环境特性属性,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])

    这有助于通用代码的编写。在车杆问题中,你可以给左右的力,你知道这些数据的含义了吗?幸运的是,你的算法学的越好,你就越少解释这些数据的含义。

     

  • 相关阅读:
    Google是如何赚钱的?
    网站数据连接
    表单验证
    Web Proxy Autodiscovery Protocol
    把SQL2000的数据库迁移至SQL2005
    WFE与Index服务器之前的通讯
    SOS 的帮助输出
    WinDbg.exe中使用的SOS.dll的命令列表
    HTTPS 简介
    Error: A web configuration modification operation is already running
  • 原文地址:https://www.cnblogs.com/TreeDream/p/9876044.html
Copyright © 2020-2023  润新知