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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
解读python logging模块的使用方法
Apr 17 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
python 对字典按照value进行排序的方法
May 09 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
python爬虫scrapy基本使用超详细教程
Feb 20 Python
Python实战之疫苗研发情况可视化
May 18 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之require/include顺序 推荐
2011/01/02 PHP
php生成excel文件的简单方法
2014/02/08 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
php常用正则函数实例小结
2016/12/29 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
python爬虫中多线程的使用详解
2019/09/23 Python
创意活动策划书
2014/01/15 职场文书
消防先进事迹材料
2014/02/10 职场文书
暑期研修感言
2014/02/17 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
招标保密承诺书
2015/01/20 职场文书
房贷收入证明范本
2015/06/12 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server