如果大家有看過我之前寫的文章

應該就知道這是一個提供很多環境讓你測試演算法的平台

今天就來詳細介紹一下使用方法

 

完整程式碼如下:

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 然後把網址貼上就可以囉~

 

貼完就像這樣

arrow
arrow

    Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()