配置深度学习环境所遇到的Bug
-
- Python环境配置
- 安装第三方库遇到的问题
-
- python安装pycocotools-2.0.1.tar.gz遇到 ERROR: Command errored out with exit status 1:…的问题
- 安装opencv-4.3
-
-
-
-
- Note:直接从官网下载opencv编译好的.exe,安装,其实就是解压过程,解压后里面有opencv_world430d.dll等文件,按照博客2的方法,成功!简单无BUG,推荐。
- 下面是我手动自己编译过程及遇到的问题:
-
- 问题1: windows下用cmake构建项目时找不到pthread.h头文件
- 问题2 :安装OpenCV时提示缺少boostdesc_bgm.i文件的问题,
- 问题3 无法打开包括文件: “features2d/test/test_detectors_invariance.impl.hpp”
- 问题4 编译中出现:LNK1104 无法打开文件“python38_d.lib”
- 问题5: opencv编译成功,所有环境配置成功,但是VS项目提示找不到.\opencv\build\install\x64\vc14\bin里面的DLL文件!!!!!!
- 安装MAKE编译器
- 安装darknet
-
- Pytorch配置问题
-
- pytorch出现RuntimeError: CUDA out of memory.
- 使用torch.view()时出现 view size is not compatible with input tensor's size and stride 的问题
- RuntimeError: Subtraction, the `-` operator, with a bool tensor is not supported. If you are trying to invert a mask, use the `~` or `logical_not()` operator instead.
- TensorFlow
Python环境配置
polyiou.cpp: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
polyiou.cpp(89): error C2059: 语法错误:“if”
polyiou.cpp(90): error C2059: 语法错误:“if”
polyiou.cpp(91): error C2065: “n1”: 未声明的标识符
解决办法:
用notepad打开polyiou.cpp,编码-转为ANSI编码
如果还是不行下载这个polyiou.cpp文件
https://download.csdn.net/download/qq_26847897/19695040?spm=1001.2014.3001.5503
安装第三方库遇到的问题
python安装pycocotools-2.0.1.tar.gz遇到 ERROR: Command errored out with exit status 1:…的问题
解决办法:
- python -m pip install -U pip
- pip install wheel
- pip install --upgrade setuptools
- 在当前的虚拟环境中安装git,安装命令为:
conda install git
继续安装pycocotools包,安装命令为:
pip install git+https://github.com/philferriere/cocoapi.git#egg=pycocotools^&subdirectory=PythonAPI
注意: 可能因为文件总量较大,若中途报错远程连接断开并退出(类似fatal: the remote end hung up unexpectedly),可以多尝试几次。
安装opencv-4.3
配置过程主要参考了两篇博客:
博客1,适用于自己手动CMAKE编译opencv
博客2,同样是手动编译,主要参考了编译过程。但是我的编译好之后找不到opencv_world430d.dll,后面的配置过程主要利用编译的文件按照上篇博客配置,成功。
Note:直接从官网下载opencv编译好的.exe,安装,其实就是解压过程,解压后里面有opencv_world430d.dll等文件,按照博客2的方法,成功!简单无BUG,推荐。
下面是我手动自己编译过程及遇到的问题:
- 1.利用CMAKE生成项目文件
-
- 利用VS对项目文件进行编译生成库文件
-
- 将库文件路径添加进环境变量,将不同文件夹下的opencv_ffmpeg410_64.dll, opencv_world410.dll 和 opencv_world410d.dll 动态链接库分别放入system32与C:\Windows\SysWOW64里
问题1: windows下用cmake构建项目时找不到pthread.h头文件
- 原因: POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32 。
- 解决方法: 到ftp://sourceware.org/pub/pthreads-win32下载Windows平台posix线程支持库,安装即可!
- 或参考
- 最后利用这个方法成功了:(第二次编译先不选opencv-contrib,选CUDA与NONFREE,出错之后再把contrib加上),链接为:https://blog.csdn.net/captain_mxd/article/details/78315224
问题2 :安装OpenCV时提示缺少boostdesc_bgm.i文件的问题,
- 原因:opencv-contrib缺少相关相关文件
解决方法,参考安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案(附带百度云资源)
问题3 无法打开包括文件: “features2d/test/test_detectors_invariance.impl.hpp”
- 原因:头文件include地址不对
- 解决方法参考https://blog.csdn.net/qq_31112205/article/details/105210496
问题4 编译中出现:LNK1104 无法打开文件“python38_d.lib”
- 原因: 在调试的时候,会出现说找不到python33_d.lib的链接错误,出现这个错误的原因是python_d.lib是库的调试后形式,当我们以debug模式编译工程时,python就用这个lib文件,但是这个文件是不可用的。对于这点,可以强制要求python在任何情况下都是用非调试版本,就可以了。要做到这一点
- 解决:
方法一:
a) 在python目录include文件夹下,打开pyconfig.h,找到如下语句
# if def_DEBUG
#pragmacomment(lib,"python33_d.lib")
#else
# pragmacomment(lib,"python33.lib")
#endif
将python33_d.lib改成python33.lib//注意更改一下路径,路径不正确会依旧提示找不到lib
b) 找到
#ifdef _DEBUG
#define Py_DEBUG
#endif
将其用屏蔽
这样就可以了。
https://blog.csdn.net/l153097889/article/details/41208005
方法二:https://blog.csdn.net/loonger_leon/article/details/5862150
问题5: opencv编译成功,所有环境配置成功,但是VS项目提示找不到.\opencv\build\install\x64\vc14\bin里面的DLL文件!!!!!!
解决方法: 重启VS!!!!!!!
安装MAKE编译器
- 参考博文1安装MinGW
- 如果出现无法下载情况,参考博文2
- Note: 如果MinGW无法下载相关文件,https://sourceforge.net/projects/mingw/files/MinGW/Extension/下载,用.7解压,放入C:\MinGW\文件夹下
安装darknet
利用配好的.sln工程配置DarkNet
- 修改darknet.vcxproj中CUDA对应的版本号,同时修改CUDA 10.1.proj 文件的路径
- 配置过程参考1
- 配置过程参考2
Pytorch配置问题
pytorch出现RuntimeError: CUDA out of memory.
参考此链接
使用torch.view()时出现 view size is not compatible with input tensor’s size and stride 的问题
- 解决方法
按照提示信息在view()的前面先加.contiguous()
- 原因分析:
找到一个比较好的解释是view()的原理是需要Tensor中的元素地址是连续的,但是有可能出现Tensor不连续的情况,所以先用.contiguous()函数将其在内存中变成连续分布
RuntimeError: Subtraction, the -
operator, with a bool tensor is not supported. If you are trying to invert a mask, use the ~
or logical_not()
operator instead.
- pytorch版本问题,重新装回1.1版本
- 或者: 将 1-mask() 改为 ~mask()
- 参考 https://blog.csdn.net/qq_37643960/article/details/103349535
TensorFlow
- import tensorflow.contrib.slim as slim
ModuleNotFoundError: No module named ‘tensorflow.contrib’
slim模块已被弃用,在https://www.pythonheidong.com/blog/article/296246/上找到一位答主给出
javascriptpip install git+https://github.com/adrianc-a/tf-slim.git@remove_contrib
的解决方案,成功地用tf_slim代替tensorflow.contrib.slim
var foo = 'bar';