强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)
目錄
1.問(wèn)題描述
2.問(wèn)題分析
(1)env.step()的返回值問(wèn)題
(2)ale-py包問(wèn)題
3.問(wèn)題解決
4.總結(jié)
1.問(wèn)題描述
????????最近在學(xué)強(qiáng)化學(xué)習(xí),用parl和gym實(shí)現(xiàn)Pong游戲的策略梯度-REINFORCE算法,主要的代碼參考paddle的parl的教程lesson4課程(具體鏈接:PARL/examples/tutorials/parl2_dygraph at develop · PaddlePaddle/PARL · GitHub)
但在寫(xiě)代碼的過(guò)程中遇到了一個(gè)問(wèn)題,在其他代碼沒(méi)有任何問(wèn)題的情況下,運(yùn)行train.py
env.step()函數(shù)會(huì)出現(xiàn):ValueError: too many values to unpack (expected 4)
2.問(wèn)題分析
????????首先排除env.step(action)的傳入?yún)?shù)沒(méi)有問(wèn)題,那問(wèn)題只能出現(xiàn)在env.step(action)的執(zhí)行和返回的過(guò)程中(在分析問(wèn)題的過(guò)程中,我參考這個(gè)博主的帖子:pytorch報(bào)錯(cuò)ValueError: too many values to unpack (expected 4)_阮阮小李的博客-CSDN博客)
(1)env.step()的返回值問(wèn)題
????????我通過(guò)gym的官網(wǎng)文檔(Core - Gym Documentation),查看了env.step()的返回值定義。
????????并將train.py代碼中的這句話(huà)
obs, reward, done, _ = env.step(act)????????修改為
obs, reward, done, _, _, _ = env.step(act)????????結(jié)果是問(wèn)題沒(méi)有解決!
(2)ale-py包問(wèn)題
????????因?yàn)樵谶@之前,我之前學(xué)習(xí)的過(guò)程中也編寫(xiě)好了其他算法和gym游戲的代碼,測(cè)試過(guò)多次是可以跑通的,在這個(gè)錯(cuò)誤出現(xiàn)后,我第一時(shí)間運(yùn)行了之前的代碼,出現(xiàn)了一模一樣的錯(cuò)誤,我突然想起來(lái)因?yàn)樵?strong>創(chuàng)建Pong游戲環(huán)境時(shí),會(huì)提示Pong游戲被gym轉(zhuǎn)移到ale-py,所以pip install ale-py安裝了ale-py,所以問(wèn)題就出現(xiàn)在ale-py這個(gè)功能包!
env = gym.make('Pong-v4')3.問(wèn)題解決
????????使用pip list命令檢查gym和ale-py的版本,我的ale-py版本是0.8.0(pip中可安裝的最新版本是0.8.0),而我的gym是0.22.0(此時(shí)pip可安裝的最新版本是0.26.2),我意識(shí)到是ale-py版本太高的問(wèn)題,最后把a(bǔ)le-py的版本重裝為0.7.2,問(wèn)題解決,并且提示我obs, reward, done, _, _, _ = env.step(act)這句話(huà)有問(wèn)題,因?yàn)橹恍枰?個(gè)輸入?yún)?shù),修改之后問(wèn)題解決!
4.總結(jié)
總結(jié)來(lái)說(shuō)就是ale-py的版本太高,不適配gym版本。
總結(jié)
以上是生活随笔為你收集整理的强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 简单编程---哥德巴赫猜想
- 下一篇: 浏览器判断麦克风和摄像头权限