baselines示例程序train_cartpole.py的ImportError


Posted in Python onMay 20, 2022

问题导出

为了更方便地实现自己的一些想法,我最终还是向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的详细内容!

Python 相关文章推荐
python列出目录下指定文件与子目录的方法
Jul 03 Python
Python的装饰器用法学习笔记
Jun 24 Python
python解决网站的反爬虫策略总结
Oct 26 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
python通过新建环境安装tfx的问题
May 20 #Python
Python使用BeautifulSoup4修改网页内容
May 20 #Python
python标准库ElementTree处理xml
May 20 #Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 #Python
Python Flask实现进度条
May 11 #Python
Python PIL按比例裁剪图片
May 11 #Python
python 学习GCN图卷积神经网络
May 11 #Python
You might like
PHP的开发框架的现状和展望
2007/03/16 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
python抓取网页内容示例分享
2014/02/24 Python
基于python历史天气采集的分析
2019/02/14 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
如何解决安装python3.6.1失败
2020/07/01 Python
学python最电脑配置有要求么
2020/07/05 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
党员四风剖析材料
2014/08/27 职场文书
5.12护士节活动总结
2015/02/10 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
趣味运动会简讯
2015/07/20 职场文书
小学英语教学反思范文
2016/02/15 职场文书
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL