Windows10下安装Mxnet

刚开始是看到这篇文章https://zhuanlan.zhihu.com/p/24879716

准备开始在自己电脑上搭MXNet

按照他的步骤做,碰到了几个问题

1. cuDNN要解压到CUDA目录,但是找了半天也不知道要到底要解压到哪里最后就没有管

2. 装Anaconda之前,要记得把电脑上原来的Python给卸载了,不然容易出现问题

3. 安装Visual C++ Compiler Nov 2013 CTP,提示已经有了需要卸载,然而并没有找到

做到第9步时,已经可以在命令行在成功训练image-classification了。以为这次搭环境这么简单就成功了,然而发现自己还是太年轻了。

第10步,vs里提示无法打开输入文件“libmxnet.lib”。在第4步时,就是直接使用了编译好的libmxnet.lib动态链接库,看来没有成功。

百度一番以后,找到这篇文章:

http://blog.csdn.net/u010414386/article/details/53304177

里面写使用GPU版本的MXNet不推荐用直接编译好的版本,于是我就接着按照这个文章来搭建,其中里面开头还马上解决了我的第3个问题:安装Visual C++ Compiler Nov 2013 CTP,要卸载”Microsoft Visual C++ 2013 Redistributable (x64)”,而且实际操作中,还要把x86的也卸载了,都卸载完后就能够成功安装。


我的步骤:


1.由于使用VS2013,增强vs对C++11的支持

下载安装Visual C++ Compiler Nov 2013 CTP,

拷贝C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2013 CTP内的文件到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC (都是安装目录下)

ps:vs2015不用这个步骤


2.CUDA,cuDNN

这两个在之前的操作中已经下载好了,要做的就是把cudnn目录下的bin目录加入环境变量

CUDA版本是8.0,cuDNN版本是5.1

ps:把cuDNN解压后里面就是一个CUDA的文件夹,别搞混了,我直接把CUDA文件夹放在了D盘下,不知道会不会出错,在这里写一下防止以后忘记了,CUDA其实并没有安装在d盘


3.OpenBLAS

opencv我以前已经安装过了,不再安装,这里安装一下OpenBLAS,链接:https://sourceforge.net/projects/openblas/files/v0.2.14/ 

安装文章下载mingw64_dll.zip和OpenBLAS-v0.2.14-Win64-int32.zip这两个文件
并创建环境变量 OpenBLAS_HOME,把openBLAS根目录加进去 
把DLL所在目录需要添加到环境变量path中(我理解为把mingw64_dll根目录加入path)


4.anaconda

我已经在之前的步骤中安装好了,需要注意的是,安装前最好将电脑上原来的python卸载。这里我也走了一点弯路,因为以前的python是手动配置的,还不知道有没有删干净。


5.mxnet

这里完全按照文章中的步骤走

“工程里面包含有引用信息,记得把引用的文件也下载下来”,这句话没有看懂,没管

按照步骤最后configure时,报错,提示OpenCV_DIR-NOTFOUND,看来以前OpenCV没有装好?

原来是OpenCV的环境变量没有配置好,参考文章OpenCV部分重新配置了环境变量,GO

还是会报其他错误,最后发现不是OpenCV的问题,而是在下载工程的时候,工程中有引用的部分,需要单独下载!

回到工程下载的git,把引用的文件一个个单独下载下来,放到mxnet文件夹里,再点configure,成功了

最后点击generate生成工程

然后打开build目录下的mxnet.sln,按照文中步骤进行编译, 生成ALL_BUILD,报错,提示无法打开ALL_BUILD,百度后知道ALL_BUILD和ZERO_CHECK在生成后都可直接移除项目。移除后生成,报错,无法打开程序 dmlccore.lib,在项目属性-配置属性-链接器-常规 中加入附加库目录,仍然没用。不知道是什么原因。

后来找到其他教程,发现只要生成mxnet项目就行,生成后报错,编译器中发生内部错误。。。百度后得知,是vs2013的bug,下载了软件升级包update5,下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=48129。

安装完成后,再生成,成功生成了libmxnet.lib和libmxnet.dll!将目录加入PATH中

 6.python

按照步骤配置python,一切顺利,完成了?

在思考后发现,之前使用编译好的lib,那个文件并没有删除,也就是这个测试有可能是之前的lib产生的。

我把之前编译好的版本删除,在测试,失败了。。不知道什么原因,回到cmake步骤重新做一遍,看看哪里发生了问题

过程中没有出现其他的问题,生成了libmxnet.lib和libmxnet.dll这两个文件,再次在python下配置

在import mxnet as mx时出现错误:

Traceback (most recent call last):
  File "", line 1, in
  File "D:\Anaconda2\lib\site-packages\mxnet-0.9.4-py2.7.egg\mxnet\__init__.py", line 7, in
    from .base import MXNetError
  File "D:\Anaconda2\lib\site-packages\mxnet-0.9.4-py2.7.egg\mxnet\base.py", line 45, in
    _LIB = _load_lib()
  File "D:\Anaconda2\lib\site-packages\mxnet-0.9.4-py2.7.egg\mxnet\base.py", line 37, in _load_lib
    lib = ctypes.CDLL(lib_path[0], ctypes.RTLD_GLOBAL)
  File "D:\Anaconda2\lib\ctypes\__init__.py", line 362, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126]

和之前的错误一样,在http://www.cnblogs.com/wacc/p/6096785.html这篇文章中作者也提到了这个错误,他提到我们缺少的dll文件有三个:

libopenblas.dllopencv_world300.dll 和 opencv_core2413.dll

其中第一个可以在OpenBLAS中找到,第二个可以再OpenCV中找到(注意是64位V12下的),

将他们复制到D:\Anaconda2\Lib\site-packages\mxnet-0.9.4-py2.7.egg\mxnet目录下,并将这个目录加入PATH

第三个dll在这两个地方都没有找到,最后载了一个opencv2.14.3版本,在这里面找到了。

第一次做完后发现还是不成功,多次试验后发现,要先python setup.py install,再把三个文件放进去,最后import mxnet。

没有报错后,进行文章中提到的测试,完成后就大功告成了!

你可能感兴趣的:(Deep,Learning)