91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

baselines程序train_cartpole.py的ImportError怎么用

發布時間:2022-05-20 14:33:42 來源:億速云 閱讀:130 作者:iii 欄目:開發技術

這篇文章主要介紹“baselines程序train_cartpole.py的ImportError怎么用”,在日常操作中,相信很多人在baselines程序train_cartpole.py的ImportError怎么用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”baselines程序train_cartpole.py的ImportError怎么用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

問題導出

為了更方便地實現自己的一些想法,我最終還是向OpenAI的baselines屈服了,因為自己的一些實現總是難與各大論文給出的結果進行對比。于是我今天安裝了baselines,其中還是有一些坑的,這里主要介紹在安裝完成之后,運行示例時cartpole.py所遇到的坑,它叫做ImportError。

ImportError

我們先cd到文件夾baselines/baselines/deepq/experiments下,然后運行下面語句:

$ python3 train_cartpole.py

然后就報錯了……

baselines程序train_cartpole.py的ImportError怎么用

從圖中我們可以看出,在文件train_cartpole.py中有如下語句:

from baselines import deepq

而在我們導入deepq的時候,將會執行deepq文件夾下的__init__.py文件,于是我們打開這一文件:

from baselines.deepq import models  # noqa
from baselines.deepq.build_graph import build_act, build_train  # noqa
from baselines.deepq.simple import learn, load  # noqa
from baselines.deepq.replay_buffer import ReplayBuffer, PrioritizedReplayBuffer  # noqa
def wrap_atari_dqn(env):
    from baselines.common.atari_wrappers import wrap_deepmind
    return wrap_deepmind(env, fram_stack=True, scale=True)

在報錯中,提到了上面的這一語句:

from baselines.deepq.simple import learn, load  # noqa

同時,報錯中提到,在simple.py中有:

from baselines import deepq

問題漸漸明朗了,在我們import deepq的時候,將要執行__init__.py文件,這個文件將會從simple.py中把learn和load導入到deepq的命名空間下。而simple.py又想要import deepq,這也就構成了所謂的“Looping Import”。那我們應該如何解決呢?

我們先將simple.py中的下面這條語句注釋掉:

from baselines import deepq

然后運行:

$ python3 train_cartpole.py

發現又出錯了:

baselines程序train_cartpole.py的ImportError怎么用

不過這個錯誤是肯定會出的,我們無緣無故注釋掉了人家寫的一個import語句,能不錯嘛。不過不要慌,我們繼續分析,為什么這里要import deepq呢?就是為了執行下面的語句:

act = deepq.build_act(**act_params)
...
act, train, update_target, debug = deepq.build_train(...)

這里因為我們在__init__.py中將build_act和build_train方法導入到了deepq的命名空間下,所以這里可以直接在deepq的命名空間中去調用build_act和build_action。

如果我們要在simple.py文件中使用deepq.build_act的話,那么必然要在simple.py中導入deepq,而且也需要在__init__.py中導入simple,這么一來,就會出現“Looping Import”問題了。

解決方案

所以我們選擇的解決方案是:

a) 將__init__.py中的下列語句注釋掉:

from baselines.deepq.build_graph import build_act, build_train # noqa

b) 將simple.py中的下列語句換掉:

from baselines import deepq

換為:

from baselines.deepq.build_graph import build_act, build_train

c) 修改下列語句:

act = deepq.build_act(**act_params)
...
act, train, update_target, debug = deepq.build_train(...)

改為:

act = build_act(**act_params)
...
act, train, update_target, debug = build_train(...)

d) 運行:

$ python3 train_cartpole.py

OK,問題解決。

對了,在OpenAI Baselines里面,有一些代碼用到了Python3.6的特性,比如直接(None, *tuple),這在Python3.4是不允許的,所以建議大家直接安裝conda環境,并裝好Python3.6。

到此,關于“baselines程序train_cartpole.py的ImportError怎么用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特前旗| 太仆寺旗| 福海县| 金坛市| 吴忠市| 阿荣旗| 遂昌县| 南丰县| 张北县| 八宿县| 遵义县| 壶关县| 仁布县| 宁安市| 黑水县| 高清| 诸暨市| 高陵县| 集贤县| 平果县| 卢湾区| 肇庆市| 屏东市| 巴东县| 仁怀市| 雷波县| 永福县| 武隆县| 洪湖市| 石渠县| 岳阳市| 广州市| 莱阳市| 武义县| 乌什县| 万盛区| 平远县| 抚远县| 木里| 什邡市| 临泉县|