Windows安装mxnet

时间:2021-12-03 03:52:59

标签:

安装MXNET

由于公司需要,近期需要快速精通mxnet,接下来的几个星期会陆续更新关于mxnet的笔记,提供参考和备忘。第一篇介绍mxnet的安装,mxnet的安装过程十分蛋疼,个人也是摸索了许久才安装成功,期间也是遇到了各种奇奇怪怪的坑,为了避免新人少走弯路,遂将经验总结于此。

windows上的安装

本人机器配置为Win10 + Cuda 7.5, 后续的安装以此为准。 1.mxnet需要VS2013支持C++ 11特性 在Visual C++ Compiler Nov 2013 CTP下载C++ 11版本的编译器,接着将C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2013 CTP下所有同名目录中的文件覆盖到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC下所有同名目录下对应的文件(覆盖前记得备份)

Windows安装mxnet

2.从github克隆源码 git clone --recursive https://github.com/dmlc/mxnet 这里提醒注意一定不要忘记--recursive参数,因为mxnet依赖于DMLC通用工具包,--recursive参数可以自动加载mshadow等依赖。 3.用Cmake生成项目工程文件,并编译项目 打开cmake,Where is the source code栏里打开刚才下好的mxnet源代码目录,Where to build the binaries栏里指定生成工程文件和编译结果的路径,这里我填的是C:/mxnet/build,如图所示:

Windows安装mxnet

接着点击configure,生成配置。

Windows安装mxnet

然后我们点击generate,生成.sln项目文件

Windows安装mxnet

找到生成的工程文件mxnet.sln,用vs2013打开

Windows安装mxnet

最后,我们在项目mxnet上点击右键->生成,开始编译。

Windows安装mxnet

经过漫长的等待后,mxnet终于编译完成。

Windows安装mxnet

编译完成后,在C:\mxnet\build\Release目录下会生成三个文件:libmxnet.dll,,libmxnet.exp,libmxnet.lib。 4.安装mxnet的python接口 接下来我们到mxnet的源代码目录:G:\OpenSource\mxnet\python,运行

python setup.py install

来安装mxnet的python包。

Windows安装mxnet

我们将libmxnet.dll 接着,导入mxnet的时候发生了如下的错误:

Windows安装mxnet

通过调试发现问题出在打开libmxnet.dll的时候,问题应该出在没有导入依赖的dll文件,但蛋疼的是我也不知道它到底依赖哪一些dll文件。 5.安装依赖 通过一番搜索,我找到一个名为dependency walker的软件,用它打开libmxnet.dll,我们看到还缺少的dll文件有哪些(图中的问号)

Windows安装mxnet

这些均能dll在mxnet的release tab下找到,下载完成后将其解压到mxnet的pthon安装目录C:\Anaconda2\Lib\site-packages\mxnet-0.7.0-py2.7.egg\mxnet下。将这些文件放入目录后,我们测试一下能不能导入

import ctypes ctypes._dlopen(r"C:\Anaconda2\Lib\site-packages\mxnet-0.7.0-py2.7.egg\mxnet\cudart64_75.dll") ctypes._dlopen(r"C:\Anaconda2\Lib\site-packages\mxnet-0.7.0-py2.7.egg\mxnet\cublas64_75.dll") ctypes._dlopen(r"cudnn64_5.dll") ctypes._dlopen(r"C:\Anaconda2\Lib\site-packages\mxnet-0.7.0-py2.7.egg\mxnet\libopenblas.dll") ctypes._dlopen(r"C:\Anaconda2\Lib\site-packages\mxnet-0.7.0-py2.7.egg\mxnet\opencv_world300.dll") ctypes._dlopen(r"C:\Anaconda2\Lib\site-packages\mxnet-0.7.0-py2.7.egg\mxnet\opencv_core2413.dll") ctypes._dlopen(r"vcomp120.dll") ctypes._dlopen(r"kernel32.dll") import mxnet as mx print "mxnet version is:%s"%mx.__version__

mxnet version is:0.7.0

上面的代码中,我们需要手动的载入mxnet依赖的动态链接库才能导入,目前还不清楚为什么它不会自动载入,这个问题留待以后解决,目前可以先把上段代码加入到mxnet的初始化代码中。接着我们跑一跑examples/image-classification/train_mnist这个例子