东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1727|回复: 2
打印 上一主题 下一主题

[C/C++] mlpack快速、灵活的C++机器学习库的安装与使用

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
跳转到指定楼层
楼主
发表于 2021-11-23 11:14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
mlpack快速、灵活的C++机器学习库的安装与使用


例子:https://github.com/mlpack/examples/




文档:https://mlpack.org/docs.html


依赖:Ensmallen 是一个用于非线性数值优化的高质量 C++ 库  https://github.com/mlpack/ensmallen
stb_image 是一个简单易用的图像解码库 https://github.com/nothings/stb


源码编译安装:
mkdir build && cd build
cmake .. 输出:
  1. -- The C compiler identification is GNU 8.4.0
  2. -- The CXX compiler identification is GNU 8.4.0
  3. -- Detecting C compiler ABI info
  4. -- Detecting C compiler ABI info - done
  5. -- Check for working C compiler: /usr/bin/cc - skipped
  6. -- Detecting C compile features
  7. -- Detecting C compile features - done
  8. -- Detecting CXX compiler ABI info
  9. -- Detecting CXX compiler ABI info - done
  10. -- Check for working CXX compiler: /usr/bin/c++ - skipped
  11. -- Detecting CXX compile features
  12. -- Detecting CXX compile features - done
  13. -- cotire 1.7.10 loaded.
  14. -- Looking for pthread.h
  15. -- Looking for pthread.h - found
  16. -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  17. -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  18. -- Looking for pthread_create in pthreads
  19. -- Looking for pthread_create in pthreads - not found
  20. -- Looking for pthread_create in pthread
  21. -- Looking for pthread_create in pthread - found
  22. -- Found Threads: TRUE  
  23. -- Found Armadillo: /usr/lib/x86_64-linux-gnu/libarmadillo.so (found suitable version "10.6.2", minimum required is "8.400.0")
  24. -- Could NOT find StbImage (missing: STB_IMAGE_INCLUDE_DIR)
  25. -- [download 100% complete]
  26. -- [download 0% complete]
  27. -- [download 6% complete]
  28. -- [download 12% complete]
  29. -- [download 19% complete]
  30. -- [download 25% complete]
  31. -- [download 31% complete]
  32. -- [download 37% complete]
  33. -- [download 44% complete]
  34. -- [download 50% complete]
  35. -- [download 56% complete]
  36. -- [download 62% complete]
  37. -- [download 68% complete]
  38. -- [download 75% complete]
  39. -- [download 81% complete]
  40. -- [download 87% complete]
  41. -- [download 93% complete]
  42. -- [download 100% complete]
  43. -- [download 100% complete]
  44. -- [download 0% complete]
  45. -- [download 25% complete]
  46. -- [download 49% complete]
  47. -- [download 74% complete]
  48. -- [download 98% complete]
  49. -- [download 100% complete]
  50. -- Successfully downloaded stb into /home/jiang/jjj_mlpack_works/mlpack-3.4.2/build/deps/stb/
  51. -- Could NOT find Ensmallen (missing: ENSMALLEN_INCLUDE_DIR) (Required is at least version "2.10.0")
  52. -- [download 0% complete]
  53. -- [download 1% complete]
  54. -- [download 2% complete]
  55. -- [download 3% complete]
  56. -- [download 4% complete]
  57. -- [download 5% complete]
  58. -- [download 6% complete]
  59. -- [download 7% complete]
  60. -- [download 8% complete]
  61. -- [download 9% complete]
  62. -- [download 10% complete]
  63. -- [download 12% complete]
  64. -- [download 13% complete]
  65. -- [download 14% complete]
  66. -- [download 16% complete]
  67. -- [download 17% complete]
  68. -- [download 18% complete]
  69. -- [download 19% complete]
  70. -- [download 20% complete]
  71. -- [download 21% complete]
  72. -- [download 22% complete]
  73. -- [download 23% complete]
  74. -- [download 24% complete]
  75. -- [download 25% complete]
  76. -- [download 26% complete]
  77. -- [download 27% complete]
  78. -- [download 28% complete]
  79. -- [download 29% complete]
  80. -- [download 30% complete]
  81. -- [download 31% complete]
  82. -- [download 32% complete]
  83. -- [download 33% complete]
  84. -- [download 34% complete]
  85. -- [download 35% complete]
  86. -- [download 36% complete]
  87. -- [download 37% complete]
  88. -- [download 38% complete]
  89. -- [download 39% complete]
  90. -- [download 40% complete]
  91. -- [download 41% complete]
  92. -- [download 42% complete]
  93. -- [download 43% complete]
  94. -- [download 44% complete]
  95. -- [download 45% complete]
  96. -- [download 46% complete]
  97. -- [download 47% complete]
  98. -- [download 48% complete]
  99. -- [download 49% complete]
  100. -- [download 50% complete]
  101. -- [download 51% complete]
  102. -- [download 53% complete]
  103. -- [download 54% complete]
  104. -- [download 55% complete]
  105. -- [download 57% complete]
  106. -- [download 58% complete]
  107. -- [download 60% complete]
  108. -- [download 61% complete]
  109. -- [download 62% complete]
  110. -- [download 63% complete]
  111. -- [download 64% complete]
  112. -- [download 65% complete]
  113. -- [download 66% complete]
  114. -- [download 67% complete]
  115. -- [download 68% complete]
  116. -- [download 69% complete]
  117. -- [download 70% complete]
  118. -- [download 71% complete]
  119. -- [download 72% complete]
  120. -- [download 73% complete]
  121. -- [download 74% complete]
  122. -- [download 75% complete]
  123. -- [download 76% complete]
  124. -- [download 77% complete]
  125. -- [download 78% complete]
  126. -- [download 79% complete]
  127. -- [download 80% complete]
  128. -- [download 81% complete]
  129. -- [download 82% complete]
  130. -- [download 83% complete]
  131. -- [download 84% complete]
  132. -- [download 85% complete]
  133. -- [download 86% complete]
  134. -- [download 87% complete]
  135. -- [download 88% complete]
  136. -- [download 89% complete]
  137. -- [download 90% complete]
  138. -- [download 91% complete]
  139. -- [download 92% complete]
  140. -- [download 93% complete]
  141. -- [download 94% complete]
  142. -- [download 95% complete]
  143. -- [download 96% complete]
  144. -- [download 98% complete]
  145. -- [download 99% complete]
  146. -- [download 100% complete]
  147. -- Successfully downloaded ensmallen into /home/jiang/jjj_mlpack_works/mlpack-3.4.2/build/deps/ensmallen-2.14.2/
  148. -- Found Boost: /usr/include (found suitable version "1.69.0", minimum required is "1.58") found components: unit_test_framework serialization
  149. -- Found OpenMP_C: -fopenmp (found version "4.5")
  150. -- Found OpenMP_CXX: -fopenmp (found version "4.5")
  151. -- Found OpenMP: TRUE (found version "4.5")  
  152. -- Found Git: /usr/bin/git (found version "2.17.1")
  153. -- Regenerating arma_config.hpp.
  154. CMake Warning at CMakeLists.txt:585 (message):
  155.   txt2man not found; man pages will not be generated.


  156. -- Julia not found (missing: JULIA_EXECUTABLE) (Required is at least version "0.7.0")
  157. -- Julia not found; not building Julia bindings.
  158. -- Not building Markdown bindings.
  159. -- Not building Python bindings.
  160. -- Go not found (missing: GO_EXECUTABLE) (Required is at least version "1.11.0")
  161. -- Gonum not found (missing: GONUM_VERSION_STRING)
  162. -- Not building Go bindings; the following modules are not available:
  163.     - Go
  164.     - Gonum
  165. -- R not found (missing: R_EXECUTABLE) (Required is at least version "4.0")
  166. -- Could NOT find R_roxygen2 (missing: R_ROXYGEN2)
  167. -- Could NOT find R_Rcpp (missing: R_RCPP)
  168. -- Could NOT find R_RcppArmadillo (missing: R_RCPPARMADILLO)
  169. -- Could NOT find R_RcppEnsmallen (missing: R_RCPPENSMALLEN)
  170. -- Could NOT find R_BH (missing: R_BH)
  171. -- Could NOT find R_testthat (missing: R_TESTTHAT)
  172. -- Not building R bindings, Following modules are not available:
  173.     - R
  174.     - roxygen2
  175.     - Rcpp
  176.     - RcppArmadillo
  177.     - RcppEnsmallen
  178.     - BH
  179.     - testthat
  180. -- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
  181. -- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
  182. -- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
  183. -- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
  184. -- Performing Test COMPILER_HAS_DEPRECATED_ATTR
  185. -- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
  186. -- CXX target mlpack cotired.
  187. -- CXX target mlpack_test cotired.
  188. -- CXX target mlpack_catch_test cotired.
  189. -- Found Doxygen: /usr/bin/doxygen (found version "1.8.13") found components: doxygen missing components: dot
  190. -- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
  191. -- Configuring done
  192. -- Generating done
  193. -- Build files have been written to: /home/jiang/jjj_mlpack_works/mlpack-3.4.2/build
复制代码

编译:make -j8
安装到系统: sudo make install
make mlpack_test
运行测试案例:bin/mlpack_test    Running 320 test cases...

输出:*** No errors detected




  1. // neighbor_search_dm01.cpp

  2. // This simple program uses the mlpack::neighbor::NeighborSearch object
  3. // to find the nearest neighbor of each point in a dataset using the L1 metric,
  4. // and then print the index of the neighbor and the distance of it to stdout.

  5. #include <mlpack/core.hpp>
  6. #include <mlpack/methods/neighbor_search/neighbor_search.hpp>

  7. using namespace mlpack;
  8. using namespace mlpack::neighbor; // NeighborSearch and NearestNeighborSort
  9. using namespace mlpack::metric; // ManhattanDistance

  10. int main()
  11. {
  12.   // Load the data from data.csv (hard-coded).  Use CLI for simple command-line
  13.   // parameter handling.
  14.   arma::mat data("0.339406815,0.843176636,0.472701471; \
  15.                   0.212587646,0.351174901,0.81056695;  \
  16.                   0.160147626,0.255047893,0.04072469;  \
  17.                   0.564535197,0.943435462,0.597070812");
  18.   data = data.t();

  19.   // Use templates to specify that we want a NeighborSearch object which uses
  20.   // the Manhattan distance.
  21.   NeighborSearch<NearestNeighborSort, ManhattanDistance> nn(data);

  22.   // Create the object we will store the nearest neighbors in.
  23.   arma::Mat<size_t> neighbors;
  24.   arma::mat distances; // We need to store the distance too.

  25.   // Compute the neighbors.
  26.   nn.Search(1, neighbors, distances);

  27.   // Write each neighbor and distance using Log.
  28.   for (size_t i = 0; i < neighbors.n_elem; ++i)
  29.   {
  30.     std::cout << "Nearest neighbor of point " << i << " is point "
  31.         << neighbors[i] << " and the distance is " << distances[i] << "." << std::endl;
  32.   }

  33.   return 0;
  34. }
复制代码



  1. cmake_minimum_required (VERSION 2.8)
  2. project (main)

  3. #SET(CMAKE_CXX_STANDARD 11)
  4. #SET(CMAKE_C_STANDARD 11)  
  5. set(CMAKE_CXX_STANDARD 14)

  6. # aux_source_directory(./base_pan ALL_SRCS)                        # 添加当前目录下所有的源文件

  7. set(ALL_SRCS "neighbor_search_dm01.cpp")
  8. # aux_source_directory(. ALL_SRCS)                        # 添加当前目录下所有的源文件
  9. message(WARNING ${ALL_SRCS})
  10. #add_subdirectory(lib)                                                # 添加lib子目录
  11. add_executable(main ${ALL_SRCS})        # 指定生成目标,注意这里要用${ALL_SRCS}!!!
  12. #target_link_libraries(main power)        # 添加链接库,power是在lib子目录的CMakeLists中定义的

  13. option(USE_OPENMP "If available, use OpenMP for parallelization." ON)
  14. if (USE_OPENMP)
  15.   find_package(OpenMP)
  16. endif ()
  17. if (OPENMP_FOUND)
  18.   add_definitions(-DHAS_OPENMP)
  19.   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
  20.   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  21. endif ()


  22. target_link_libraries(main -lmlpack -larmadillo)
  23. # target_link_libraries(main -lboost_system -lboost_thread -lfftw3f -lpthread)
  24. # mlpack was compiled with OpenMP support, but you are compiling without OpenMP support



复制代码








让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
沙发
 楼主| 发表于 2021-11-23 14:12:13 | 只看该作者
boost::serialization 未定义的引用  还要加上这个 -lboost_serialization
  1. cmake_minimum_required (VERSION 2.8)
  2. project (main)

  3. SET(CMAKE_CXX_STANDARD 11)
  4. #SET(CMAKE_C_STANDARD 11)  
  5. # set(CMAKE_CXX_STANDARD 14)

  6. # aux_source_directory(./base_pan ALL_SRCS)                        # 添加当前目录下所有的源文件

  7. set(ALL_SRCS "02_mnist_cnn.cpp")
  8. # aux_source_directory(. ALL_SRCS)                        # 添加当前目录下所有的源文件
  9. message(WARNING ${ALL_SRCS})
  10. #add_subdirectory(lib)                                                # 添加lib子目录
  11. add_executable(main ${ALL_SRCS})        # 指定生成目标,注意这里要用${ALL_SRCS}!!!
  12. #target_link_libraries(main power)        # 添加链接库,power是在lib子目录的CMakeLists中定义的

  13. option(USE_OPENMP "If available, use OpenMP for parallelization." ON)
  14. if (USE_OPENMP)
  15.   find_package(OpenMP)
  16. endif ()
  17. if (OPENMP_FOUND)
  18.   add_definitions(-DHAS_OPENMP)
  19.   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
  20.   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  21. endif ()



  22. # find_package(Boost
  23. #     COMPONENTS
  24. #       unit_test_framework
  25. #       serialization
  26. #     REQUIRED
  27. # )



  28. target_link_libraries(main -lmlpack -larmadillo -lboost_system -lboost_serialization)
  29. # target_link_libraries(main -lboost_system -lboost_thread -lfftw3f -lpthread)
  30. # mlpack was compiled with OpenMP support, but you are compiling without OpenMP support
  31. # boost::serialization 未定义的引用  还要加上这个 -lboost_serialization

复制代码
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

98

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
板凳
发表于 2021-11-23 19:20:47 | 只看该作者
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-19 14:28 , Processed in 0.170695 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表