<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # OpenAI Gym 101 OpenAI Gym 是一個基于 Python 的工具包,用于研究和開發強化學習算法。 OpenAI Gym 在撰寫本文時提供了 700 多個開源貢獻環境。使用 OpenAI,您還可以創建自己的環境。最大的優勢是 OpenAI 提供了一個統一的界面來處理這些環境,并在您專注于強化學習算法的同時負責運行模擬。 描述 OpenAI Gym 的研究論文可在以下鏈接中找到:[http://arxiv.org/abs/1606.01540](http://arxiv.org/abs/1606.01540).? 您可以使用以下命令安裝 OpenAI Gym: ```py pip3 install gym ``` 如果上述命令不起作用,您可以在以下鏈接中找到有關安裝的更多幫助:[https://github.com/openai/gym#installation](https://github.com/openai/gym#installation).? 1. 讓我們在 OpenAI Gym 中打印可用環境的數量: 您可以按照本書代碼包中的 Jupyter 筆記本`ch-13a_Reinforcement_Learning_NN`中的代碼進行操作。 ```py all_env = list(gym.envs.registry.all()) print('Total Environments in Gym version {} : {}' .format(gym.__version__,len(all_env))) Total Environments in Gym version 0.9.4 : 777 ``` 1. 讓我們打印所有環境的列表: ```py for e in list(all_env): print(e) ``` 輸出的部分列表如下: ```py EnvSpec(Carnival-ramNoFrameskip-v0) EnvSpec(EnduroDeterministic-v0) EnvSpec(FrostbiteNoFrameskip-v4) EnvSpec(Taxi-v2) EnvSpec(Pooyan-ram-v0) EnvSpec(Solaris-ram-v4) EnvSpec(Breakout-ramDeterministic-v0) EnvSpec(Kangaroo-ram-v4) EnvSpec(StarGunner-ram-v4) EnvSpec(Enduro-ramNoFrameskip-v4) EnvSpec(DemonAttack-ramDeterministic-v0) EnvSpec(TimePilot-ramNoFrameskip-v0) EnvSpec(Amidar-v4) ``` 由`env`對象表示的每個環境都有一個標準化的接口,例如: * 通過傳遞 id 字符串,可以使用`env.make(&lt;game-id-string&gt;)`函數創建`env`對象。 * 每個`env`對象包含以下主要函數: * `step()`函數將操作對象作為參數并返回四個對象: * 觀察:由環境實現的對象,代表對環境的觀察。 * 獎勵:一個帶符號的浮點值,表示前一個操作的增益(或損失)。 * `done`:表示方案是否完成的布爾值。 * `info`:表示診斷信息的 Python 字典對象。 * `render()`函數可創建環境的直觀表示。 * `reset()`函數將環境重置為原始狀態。 * 每個`env`對象都有明確定義的動作和觀察,由`action_space`和`observation_space`表示。 CartPole 是健身房里最受歡迎的學習強化學習游戲之一。在這個游戲中,連接到推車的桿必須平衡,以便它不會下降。如果桿子傾斜超過 15 度或者推車從中心移動超過 2.4 個單元,則游戲結束。 [OpenAI.com](http://openai.com) 的主頁用這些詞強調游戲: 這種環境的小尺寸和簡單性使得可以進行非常快速的實驗,這在學習基礎知識時是必不可少的。 游戲只有四個觀察和兩個動作。動作是通過施加+1 或-1 的力來移動購物車。觀察結果是推車的位置,推車的速度,桿的角度以及桿的旋轉速度。然而,學習觀察語義的知識不是學習最大化游戲獎勵所必需的。 現在讓我們加載一個流行的游戲環境 CartPole-v0,然后用隨機控件播放: 1. 使用標準`make`函數創建`env`對象: ```py env = gym.make('CartPole-v0') ``` 1. 劇集的數量是游戲的數量。我們現在將它設置為一個,表示我們只想玩一次游戲。由于每集都是隨機的,因此在實際的制作過程中,您將運行多集并計算獎勵的平均值。此外,我們可以初始化一個數組,以便在每個時間步都存儲環境的可視化: ```py n_episodes = 1 env_vis = [] ``` 1. 運行兩個嵌套循環 - 一個用于劇集數量的外部循環和一個用于您要模擬的時間步數的內部循環。您可以繼續運行內部循環,直到方案完成或將步數設置為更高的值。 * 在每集開始時,使用`env.reset()`重置環境。 * 在每個時間步的開始,使用`env.render()`捕獲可視化。 ```py for i_episode in range(n_episodes): observation = env.reset() for t in range(100): env_vis.append(env.render(mode = 'rgb_array')) print(observation) action = env.action_space.sample() observation, reward, done, info = env.step(action) if done: print("Episode finished at t{}".format(t+1)) break ``` 1. 使用輔助函數渲染環境: ```py env_render(env_vis) ``` 1. 輔助函數的代碼如下: ```py def env_render(env_vis): plt.figure() plot = plt.imshow(env_vis[0]) plt.axis('off') def animate(i): plot.set_data(env_vis[i]) anim = anm.FuncAnimation(plt.gcf(), animate, frames=len(env_vis), interval=20, repeat=True, repeat_delay=20) display(display_animation(anim, default_mode='loop')) ``` 運行此示例時,我們得到以下輸出: ```py [-0.00666995 -0.03699492 -0.00972623 0.00287713] [-0.00740985 0.15826516 -0.00966868 -0.29285861] [-0.00424454 -0.03671761 -0.01552586 -0.00324067] [-0.0049789 -0.2316135 -0.01559067 0.28450351] [-0.00961117 -0.42650966 -0.0099006 0.57222875] [-0.01814136 -0.23125029 0.00154398 0.27644332] [-0.02276636 -0.0361504 0.00707284 -0.01575223] [-0.02348937 0.1588694 0.0067578 -0.30619523] [-0.02031198 -0.03634819 0.00063389 -0.01138875] [-0.02103895 0.15876466 0.00040612 -0.3038716 ] [-0.01786366 0.35388083 -0.00567131 -0.59642642] [-0.01078604 0.54908168 -0.01759984 -0.89089036] [ 1.95594914e-04 7.44437934e-01 -3.54176495e-02 -1.18905344e+00] [ 0.01508435 0.54979251 -0.05919872 -0.90767902] [ 0.0260802 0.35551978 -0.0773523 -0.63417465] [ 0.0331906 0.55163065 -0.09003579 -0.95018025] [ 0.04422321 0.74784161 -0.1090394 -1.26973934] [ 0.05918004 0.55426764 -0.13443418 -1.01309691] [ 0.0702654 0.36117014 -0.15469612 -0.76546874] [ 0.0774888 0.16847818 -0.1700055 -0.52518186] [ 0.08085836 0.3655333 -0.18050913 -0.86624457] [ 0.08816903 0.56259197 -0.19783403 -1.20981195] Episode finished at t22 ``` 桿子需要 22 個時間步長才能變得不平衡。在每次運行中,我們得到不同的時間步長值,因為我們通過使用`env.action_space.sample()`在學術上選擇了動作。 由于游戲如此迅速地導致損失,隨機選擇一個動作并應用它可能不是最好的策略。有許多算法可以找到解決方案,使桿子保持筆直,可以使用更長的時間步長,例如爬山,隨機搜索和策略梯度。 解決 Cartpole 游戲的一些算法可通過以下鏈接獲得: [https://openai.com/requests-for-research/#cartpole](https://openai.com/requests-for-research/#cartpole) [http://kvfrans.com/simple-algoritms-for-solving-cartpole/](http://kvfrans.com/simple-algoritms-for-solving-cartpole/) [https://github.com/kvfrans/openai-cartpole](https://github.com/kvfrans/openai-cartpole)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看