这两天准备用C++完成机器学习,第一步需要装一些机器学习的工具包就像python的scikit learn 一样。这篇文章参考了一些github的内容,剔除了里面的一些坑,按照此方案应该可以顺利完成。
提前的准备:Cmake 下载地址 https://cmake.org/download/
第一步:下载 Download mlpack 地址:https://www.mlpack.org/
建立一个文件夹project 。例如:E:/projects/ 再把下载的mlpack放进去。如 E:/projects/mlpack-3.0.4/
第二步:在 Visual Studio里面安装 mlpack 并且 下载一些 附属物(dependencies) 用NuGet.
打开 Visual Studio and 点击 文件 > 新建 > 从现有代码创建项目
选择Visual C++ 点击下一步,得到下面的图:
项目文件位置和项目名称(自己填写,自己希望的路径)。
下面讲一下如何用 NuGet
打开VS2015,点击 如下图的位置。
上述操作完成后,会跳出下面图,点击浏览,并且输入想要下载的模块 ,例如OpenBLAS,如下图。
利用同样的方法下载以下几个包
- boost
- boost_unit_test_framework-vc140
- boost_program_options-vc140
- boost_random-vc140
- boost_serialization-vc140
- boost_math_c99-vc140
- OpenBLAS
下载完成后,文件夹 E:projects/mlpack-3.0.4/packages内 会包括下图几个文件夹
再在 E:projects/mlpack-3.0.4/packages文件夹内 建立一个名为 boost_libs 的新的文件夹
此时, E:projects/mlpack-3.0.4/packages 内为下图
此时,需要把下面五个文件中 lib\native 文件内的X64 的.lib 和 .dll文件全部复制到boost_libs 文件夹下。
- boost_unit_test_framework-vc140
- boost_program_options-vc140
- boost_random-vc140
- boost_serialization-vc140
- boost_math_c99-vc140
下面以 boost_unit_test_framework-vc140为例讲解
挑出文件下,所有的X64 贴到 boost_libs文件中。
第三步,下载Armadillo,并编译。
把下载的Armadillo放到 E:/projects 文件下,因此,E:/projects/文件夹下面有 armadillo-8.300.3
和 mlpack-3.0.4两个文件。
在armadillo-8.300.3 文件下下面建立一个build的文件夹。
打开命令窗口,输入 armadillo-8.300.3文件下 build 的路径 如下图
再输入
cmake -G "Visual Studio 14 2015 Win64" -DBLAS_LIBRARY:FILEPATH="E:/cML/mlpack-3.0.4/packages/OpenBLAS.0.2.14.1/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DLAPACK_LIBRARY:FILEPATH="E:/cML/mlpack-3.0.4/packages/OpenBLAS.0.2.14.1/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DCMAKE_PREFIX:FILEPATH="E:/projects/armadillo-8.300.3" -DBUILD_SHARED_LIBS=OFF ..
其中的路径根据自己的需要可以改。
完成后点击 E:\cML\armadillo-8.300.3\build 内的 armadillo.sln 再在 VS2015下进行编译 点击 生成>生成解决方案
第四步, E:\cML\mlpack-3.0.4 下面建立一个build 文件夹。剩下的步骤与上一步一样,只不过路径不同,先找到路径
再贴入下面代码(同样路径自己设定)
cmake -G "Visual Studio 14 2015 Win64" -DBLAS_LIBRARY:FILEPATH="E:/cML/mlpack-3.0.4/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DLAPACK_LIBRARY:FILEPATH="E:/cML/mlpack-3.0.4/packages/OpenBLAS.0.2.14.1/lib/native/lib/x64/libopenblas.dll.a" -DARMADILLO_INCLUDE_DIR="E:/cML/armadillo-8.300.3/include" -DARMADILLO_LIBRARY:FILEPATH="E:/cML/armadillo-8.300.3/build/Debug/armadillo.lib" -DBOOST_INCLUDEDIR:PATH="E:/cML/mlpack-3.0.4/packages/boost.1.69.0.0/lib/native/include" -DBOOST_LIBRARYDIR:PATH="E:\cML\mlpack-3.0.4\packages\boost_libs" -DDEBUG=OFF -DPROFILE=OFF ..
再打开,E:\cML\mlpack-3.0.4\build 文件夹下的 mlpack.sln 编译。如果成功了,大功告成!