强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)
目錄
1.問題描述
2.問題分析
(1)env.step()的返回值問題
(2)ale-py包問題
3.問題解決
4.總結
1.問題描述
????????最近在學強化學習,用parl和gym實現Pong游戲的策略梯度-REINFORCE算法,主要的代碼參考paddle的parl的教程lesson4課程(具體鏈接:PARL/examples/tutorials/parl2_dygraph at develop · PaddlePaddle/PARL · GitHub)
但在寫代碼的過程中遇到了一個問題,在其他代碼沒有任何問題的情況下,運行train.py
env.step()函數會出現:ValueError: too many values to unpack (expected 4)
2.問題分析
????????首先排除env.step(action)的傳入參數沒有問題,那問題只能出現在env.step(action)的執行和返回的過程中(在分析問題的過程中,我參考這個博主的帖子:pytorch報錯ValueError: too many values to unpack (expected 4)_阮阮小李的博客-CSDN博客)
(1)env.step()的返回值問題
????????我通過gym的官網文檔(Core - Gym Documentation),查看了env.step()的返回值定義。
????????并將train.py代碼中的這句話
obs, reward, done, _ = env.step(act)????????修改為
obs, reward, done, _, _, _ = env.step(act)????????結果是問題沒有解決!
(2)ale-py包問題
????????因為在這之前,我之前學習的過程中也編寫好了其他算法和gym游戲的代碼,測試過多次是可以跑通的,在這個錯誤出現后,我第一時間運行了之前的代碼,出現了一模一樣的錯誤,我突然想起來因為在創建Pong游戲環境時,會提示Pong游戲被gym轉移到ale-py,所以pip install ale-py安裝了ale-py,所以問題就出現在ale-py這個功能包!
env = gym.make('Pong-v4')3.問題解決
????????使用pip list命令檢查gym和ale-py的版本,我的ale-py版本是0.8.0(pip中可安裝的最新版本是0.8.0),而我的gym是0.22.0(此時pip可安裝的最新版本是0.26.2),我意識到是ale-py版本太高的問題,最后把ale-py的版本重裝為0.7.2,問題解決,并且提示我obs, reward, done, _, _, _ = env.step(act)這句話有問題,因為只需要4個輸入參數,修改之后問題解決!
4.總結
總結來說就是ale-py的版本太高,不適配gym版本。
總結
以上是生活随笔為你收集整理的强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单编程---哥德巴赫猜想
- 下一篇: 每周一磁 · 矫顽力Hcb和内禀矫顽力H