batch ppo
Tensor
此計畫為強化學習提供了最佳化的基礎設施。它將 OpenAIgym 介面擴展到多個並行環境,並允許代理程式在 TensorFlow 中實作並執行批量計算。作為起點,我們提供 BatchPPO,這是近端策略優化的最佳化實現。
如果您在研究中使用該項目的程式碼,請引用 TensorFlow Agents 論文:
@article { hafner2017agents ,
title = { TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow } ,
author = { Hafner, Danijar and Davidson, James and Vanhoucke, Vincent } ,
journal = { arXiv preprint arXiv:1709.02878 } ,
year = { 2017 }
}
相依性:Python 2/3、TensorFlow 1.3+、Gym、ruamel.yaml
克隆儲存庫並透過鍵入以下內容來運行 PPO 演算法:
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
要使用的演算法在配置中定義,此處啟動的pendulum
使用包含的 PPO 實作。在agents/scripts/configs.py
中查看更多預先定義的設定。
如果要恢復先前開始的運行,請將--timestamp=<time>
標誌新增到最後一個命令,並在運行的目錄名稱中提供時間戳記。
若要視覺化指標,請從另一個終端啟動 TensorBoard,然後將瀏覽器指向http://localhost:2222
:
tensorboard --logdir=/path/to/logdir --port=2222
要渲染影片並收集 OpenAI Gym 統計資料以上傳到記分板,請輸入:
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
我們發布這個計畫作為一個起點,可以輕鬆實現新的強化學習想法。這些文件是修改程式碼時的好起點:
文件 | 內容 |
---|---|
scripts/configs.py | 指定任務和演算法的實驗配置。 |
scripts/networks.py | 神經網路模型。 |
scripts/train.py | 包含訓練設定的可執行檔。 |
algorithms/ppo/ppo.py | PPO 演算法的 TensorFlow 圖。 |
若要執行單元測試和 linting,請鍵入:
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
如有其他問題,請在 Github 上提出問題。
我們為 OpenAI Gym 環境提供了一個批次接口,該接口與 TensorFlow 完全集成,以實現高效的演算法實現。這是透過以下核心元件實現的:
agents.tools.wrappers.ExternalProcess
是一個環境包裝器,用於在外部進程內部建立 OpenAI Gym 環境。對step()
和reset()
呼叫以及屬性存取將轉送到行程並等待結果。這允許並行運行多個環境,而不受Python全域解釋器鎖的限制。agents.tools.BatchEnv
將 OpenAI Gym 介面擴展到批次環境。它結合了多個 OpenAI Gym 環境, step()
接受一批操作並傳回一批觀察結果、獎勵、完成標誌和資訊物件。如果各個環境存在於外部流程中,它們將並行進行。agents.tools.InGraphBatchEnv
將批次環境整合到 TensorFlow 圖中,並使其step()
和reset()
函數可作為操作存取。當前批次的觀察結果、最後的操作、獎勵和完成標誌儲存在變數中並作為張量提供。agents.tools.simulate()
將圖內批次環境和強化學習演算法的步驟整合到一個操作中,在訓練循環內呼叫。這減少了會話呼叫的數量,並提供了訓練未來演算法的簡單方法。要瞭解所有程式碼,請熟悉 TensorFlow 的控制流程操作,尤其是tf.cond()
、 tf.scan()
和tf.control_dependencies()
。
這不是 Google 官方產品。