总结:
接上昨日惨案,大意就是 为了解决一个错误,要安装gym==0.18.0,经历了乱七八糟得出结论要重装一个<= python 3.8的版本,于是开贴重装。
1.windows可装多个python环境,很easy 随便装。
2.安装了python 3.8之后,已装CUDA11.6,需要再装一个CUDA么?我觉得不需要
3.装pillow==7.2.0,gym==0.18.0,发现还是需要degrade setuptools。
4.degarde? setuptools必须连带wheel一起降级。
5.安装gym==0.18.0成功之后,发现运行报错If capturable=False, state_steps should not be CUDA tensors。查阅的两种解决方案令人无奈,为了懒得再装CUDA 选择了一个简单的方式,但不知有啥副作用。
总结:山穷水复疑无路,跳进一坑又一坑。
目录
3.安装pillow==7.2.0?和gym==0.18.0,然后又出错,还是得降级 setuptools
4.请注意,光使用?pip install setuptools ==65.5.0降级没有用,还是报错,需要同时降级wheel
5. 再次安装??pip install gym==0.18.0,终于成功。
6."If capturable=False, state_steps should not be CUDA tensors“
首先,查阅到,一个windows可以装多个版本的python,没有问题,回到曾经装过python的流程来一遍。
很easy,装完了。接下来要安装与python相关的一系列库和包了。
CUDA、cuDNN、pytorch 是必须版本要对应的,步骤1里的装python流程里有说明。但是:
遇到第一个问题,我的电脑已经装过cuda11.6,新的python我是否需要再装cuda?就是 cuda是否可以在python 3.8和3.9之间共享呢?
尝试:不装cuda,直接去装一个和我的cuda 对应版本的pytorch。
查看本人电脑已装的CUDA版本, 即 11.6版本。于是打算不装新的CUDA了,直接再python 3.8之下装一个 和CUDA 11.6相匹配的pytorch是不是就可以了?
深思: CUDA是 python环境下的一个package么?我觉得不是,因为python的每个版本需要设置在环境变量的路径里,CUDA也需要在路径里,我猜测他们是同级的关系??我也不知道,试试呗,哪个大佬懂得可以在评论区讲一下或者甩个链接,感激不尽!!
去网站找对应的torch版本和下载命令,最终决定装torch1.12.0和cuda11.6的版本,命令如下:Previous PyTorch Versions | PyTorch?https://pytorch.org/get-started/previous-versions/
pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116
安装pytorch成功。
pip install -I Pillow==7.2.0
pip install gym==0.18.0
pip install setuptools==65.5.0 "wheel<0.40.0"
似乎完结撒花~~??事情并不总是那么简单
装完了运行程序需要的其他乱七八糟的库之后,运行又报错!!!
难道是我的pytorch版本不对??这里可以查到python和pytorch对应的版本
经查阅,我的python 3.8.4,torch 1.12.0,没啥毛病啊!!
然后去查找这个?assert not step_t.is_cuda, "If capturable=False, state_steps should not be CUDA tensors,原帖如下
assert not step_t.is_cuda, "If capturable=False, state_steps should not be CUDA tensors. · Issue #80809 · pytorch/pytorch (github.comhttps://github.com/pytorch/pytorch/issues/80809找个高赞解释一下,大意就是 torch 1.12.0有问题,两种解决方案:
1. 设置?optim.param_groups[0]['capturable'] = True? 可能会使得 训练过程变慢,副作用未知
2.退回 torch 1.11.0版本(可是我已经有了cuda 11.6,torch 11.0又不和 cuda11.6兼容,我要是退回 torch 1.11.0得 重装CUDA和cuDNN,想到这里心已死~)
于是本着懒人选择,代码能跑就行,不care效率;我选择了第一个?optim.param_groups[0]['capturable'] = True,在我源代码的位置如下:
尝试train了一下,貌似有exception错误,后续再说,反正是能跑了!!!!
总结:山穷水复疑无路,跳进一坑又一坑。