如果大家有看過我之前寫的文章
應該就知道這是一個提供很多環境讓你測試演算法的平台
今天就來詳細介紹一下使用方法
完整程式碼如下:
import gym
import tensorflow
env = gym.make(‘Acrobot-v1’)
env.monitor.start(‘log_gym/cartpole-experiment-1’,video_callable=lambda count: count % 10 == 0)
for episode in range(100):
env.reset()
for i in range(100):
env.render()
next_state,reward,done,_=env.step(env.action_space.sample()) # take a random action
if done:
break
print ‘episdoe: ‘,episode
env.monitor.close()
gym.upload(‘/home/darren/My_project/log_gym/cartpole-experiment-1′, api_key=’your key’)
首先要先引用相關函數
import gym
import tensorflow
再來選擇您要跑的環境
env = gym.make(‘Acrobot-v1’)
大致上介紹一下 環境大概如下 acrobot 是由兩根連桿 所組成的
主要目的就是使得連桿的尾端 接近到我們所定義的高點 (上面黑色那條)
我最愛的就是這個功能 想當初我還要自己找第三方軟體 自行錄影
在gym當中 他都幫妳寫好了 你只需要打下面這一行
裡面的參數是填寫你想要存放的位置
至於 cartpole-experiment-1 你可以隨便命名 他會產生相應資料夾
env.monitor.start(‘log_gym/cartpole-experiment-1’)
它會自動幫你錄影 至於隔多少 小編就不知道它怎麼算的了
小邊隨便跑個100個episode 所記錄的分別是 0 1 8 27 64
您還可以自己控制每隔幾個episode 記錄一次
小編這裡是寫 每隔10個episode 記錄一次
env.monitor.start(‘log_gym/cartpole-experiment-2’,video_callable=lambda count: count % 10 == 0)
再來就開始學習囉~~~
不過這裡小編沒打任何演算法
主要是讓大家熟悉 gym 的code編寫方式
這裡小編設計總共跑 100個 episode
for episode in range(100):
然後記住 每重新一個episode 必須把環境初始化一次
env.reset()
這裡小編設計 每一個 episode 跑 100 個step
for i in range(100):
每執行完一個動作後 必須render一次 這樣狀態才會更新 畫面也才會更新
env.render()
這裡小編是採取random action 的方式 總共會回傳三個值
分別是
第一個: 狀態
每個環境回傳的狀態可能都不一樣 這需要翻原始碼去找
以這個環境為例子 原始檔碼在這裡
打開就有詳細的說明:
state 會回傳四個值 分別是 第一軸角度 第二軸角度 第一軸角速度 第二軸角速度
第二個:reward
找到原始檔 最下面有說 如果沒有甩到上面 reward 都一直給 -1
甩到上面reward 就給0
第三個:done
紀錄完成已否 如果完成了 那麼done 會回傳1 反之回傳0
next_state,reward,done,_=env.step(env.action_space.sample()) # take a random action
如果完成了 就讓他跳出迴圈 執行下一個episode
if done:
break
整個學習過程結束 我們將monitor 關閉
env.monitor.close()
然後將資料夾裡的東西上傳到gym平台 他會自己幫你打分數
這也是我喜歡的功能之一 好像每次都是小考一樣啊 哈哈
前面參數擺要上傳的資料夾位置 後面就是放入你的api_key
這需要創建一個 github 帳號 然後點擊右上角 sign in with github
在右上角的地方 你就會看到您帳號的api_key 了
gym.upload(‘/home/darren/My_project/log_gym/cartpole-experiment-2′, api_key=’your key’)
上傳後就馬上幫你打分數了呢 我看看…我的分數是……….. -100分阿 哈哈
隨便寫寫的考券 竟然可以比別人高阿~~哈哈 看來random 方法也不錯啊XD
大家也趕快去上傳自己演算法的訓練結果吧~~
如果您想分享原始碼的話 就去github創建一個gist 然後把網址貼上就可以囉~
貼完就像這樣