系列博客:
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后,解压,更改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
问题七:如何查看跑出来的数据
问题八:想有可视化效果,但提示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博客