MADDPG-MASTER调试笔记(三)——正式调试

 系列博客:

【深度强化学习】多智能体深度强化学习-CSDN博客

MADDPG-MASTER调试笔记(一)——环境创建_酸酸甜甜我最爱的博客-CSDN博客

MADDPG-MASTER调试笔记(二)——环境创建-CSDN博客

MADDPG-MASTER调试笔记(三)——正式调试-CSDN博客

MADDPG-MASTER调试笔记(四)——参数调整-CSDN博客

在做好前期工作后,正式开始在Pycharm中运行代码,进行代码的检查与运用。

一、阅读READ ME  

重点是各个库的版本:

二、移植环境

将“multiagent-particle-envs-master”(即MPE)中的“multiagent”文件夹移植到“maddpg-master”文件夹中的“maddpg”文件夹中。 

三、调试代码

问题一:train.py文件中前几行引用中显示报错,没有名称为'maddpg'的模块

将maddpg文件夹移植到experiment下,问题解决。

问题二:FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated

 原因是numpy版本过高,需要降低版本(现在的版本是1.18.5,将其降低为1.14.5),输入命令:

pip uninstall numpy
pip install numpy==1.14.5

出现报错,无法下载numpy1.14.5版本 

又去这个网站上找现成的安装包了:Archived: Python Extension Packages for Windows - Christoph Gohlke (uci.edu)

发现网站上没有1.14.5版本的numpy,换另外一个办法,在命令框输入:

conda install numpy==1.14.5

 以下的库全部一起被下载,成功下载!

此时,查看conda list:

问题三: No module named 'multiagent'

初步排查发现应该还是文件夹之间的调用产生问题,之间把maddpg文件夹移植到experiment文件夹下面,但这里对代码没有进行更改,所以现在先将引用出错的地方进行更改。并且整个代码目录里,有一个叫做maddpg的文件夹,也有一个叫做maddpg的代码文件,所以在调用的时候也会产生分歧,故将maddpg的文件夹重新改名为MADDPG。

原来的调用如下:

 现在的调用如下:

但后面两张图片的调用问题依然没有解决,说到底还是文件夹之间的调用产生问题。

python本身不支持跨目录调用文件!

查阅相关博文,发现方法:

没有解决!我先将MADDPG文件夹移出experiment文件夹。 

找到以下几个方法,都没有解决问题。

python 调用不同文件夹下的 py文件_python不同文件夹下的py文件调用_AI炮灰的博客-CSDN博客

python跨文件夹调用别的文件夹下的py文件或参数方式_python不同文件夹下的py文件调用-CSDN博客

 又将MADDPG文件夹移回experiment文件夹。

因为反反复复修改,担心有些代码被我打乱,所以重新开了个版本,一切从头开始。

将maddpg文件夹移植到experiment文件夹下,并确保每一个子文件夹下都有“__init__.py”文件的存在,将各个引用的路径进行更改,问题解决!

有关“__init__.py”文件的作用和用法可以参考这篇文章:

【精选】Python包中__init__.py文件的作用和用法-CSDN博客

问题四:No module named 'gym'

缺gym库,安装gym库,输入以下命令: 

pip install gym==0.10.5

出现错误:

输入另外一种命令如下:

conda install gym==0.10.5

提示找不到这个版本

PackagesNotFoundError: The following packages are not available from current channels的解决办法-CSDN博客

没能解决问题,继续查询后发现可能是pip版本过高,需要降低版本。 

pip升级不可以使用总是报错cannot import name 'FormatControl',解决办法_importerror: cannot import name 'formatcontrol-CSDN博客

下载pip后,解压,更改anaconda环境路径为解压后的文件夹的路径,再输入python setup.py install命令

之后再将环境路径更换为默认,重新输入安装gym命令,出现报错:

发现可能是镜像源的关系,换个镜像源试一试。

清华镜像源https://pypi.tuna.tsinghua.edu.cn/simple
中国科学技术大学

https://pypi.mirrors.ustc.edu.cn/simple

豆瓣http://pypi.douban.com/simple/

 使用方法(以豆瓣镜像源为例):

pip install 包名 -i http://pypi.douban.com/simple/

换个镜像源之后成功! 

问题五:训练60000次后,出现TypeError: Can't convert 'NoneType' object to str implicitly

“无法将NoneType隐式转化为str”

解决方法,成功

更改train.py第27行,添加默认文件名:
parser.add_argument("--exp-name", type=str, default="exp1", help="name of the experiment")
或输入命令行时进行自定义:
--env_name = exp1

问题六:FileNotFoundError: [Errno 2] No such file or directory: './learning_curves/exp1_rewards.pkl'

 解决方法,成功

需要人为在experienments下面建子目录learning_curves

问题七:如何查看跑出来的数据

打开pkl文件_matlab pkl文件-CSDN博客

问题八:想有可视化效果,但提示SyntaxError: invalid syntax

先将train.py中display设为FALSE,待训练完毕再设为True展示效果。

之后再跑一次代码的话,会显示:

根据提示把这行代码及其余各处里原有的f删去:

 出现新错误(Exception: pyglet {version} requires Python {MIN_PYTHON_VERSION_STR} or newer.):

结合提示,我猜测是说pyglet的版本太高了,没办法运行 。接着我看到显示报错的行这一段主要是在判断现在的python和最低python版本的比较,想了想直接把3,8改成了3,4。这样改后就不报pyglet的错误了,后续影响还不确定。

接下来出现新的报错,说python3.5不支持赋值表达式。

查询了:=的意思,只需要把这句话重新编写即可。

意识到一个问题,之所以这些问题总是出现的源头是之前规定的python版本是最低3.8,但同时其他文件要求的版本是3.5。 直接把pyglet的版本降下来看看行不行。输入命令:

pip install pyglet==1.4.6

结果报错,原因是网速太慢,更换一个新的命令(延长安装时间)

pip --default-timeout=100 install -U pyglet==1.4.6

也没能成功,换个镜像源,成功

pip install pyglet==1.4.6 -i https://pypi.mirrors.ustc.edu.cn/simple

成功啦!原来只要把pyglet版本降下来就能看到动画!

问题九:如何更换环境?

MADDPG算法复现出现的问题:1.除simple环境以外其他环境跑不通_simple_reference环境怎么跑啊、-CSDN博客

问题十:如何展示训练曲线?

【OpenAI-maddpg】训练时遇到的一些错误_Ander7的博客-CSDN博客

【OpenAI-Maddpg】训练运行_maddpg参数设置_Ander7的博客-CSDN博客

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值