用c++實現神經網路一般用什麼庫?
是使用什麼矩陣運算的庫還是不用呢?
有人說過Armadilloopenblas
mklcublas這四個,不知道他們分別各有什麼優劣呢?
mxnet有你要的,你不會失望的
神經網路有現成的庫:FANN和ANNIE。
如果你想自己實現神經網路玩玩的話,不妨用MATLAB;具體可以參考Unsupervised Feature Learning and Deep Learning Tutorial,這個教程是Andrew Ng和他的學生寫的,上面有配套的MATLAB習題,是很好的練習材料。
但如果你想實際使用神經網路做項目的話,建議還是使用開源的庫,比如Caffe | Deep Learning Framework。事實上,不建議個人實現神經網路做為項目用途:其中的卷積、反向傳導等實現要想做好還是不太容易的。
關於你說的矩陣庫,我只用過armadillo,在Windows上面和VS搭配使用的,配置很簡單,裡面也有examples,很好上手;而且這個庫本身是基於blas和lapack,個人感覺還是很高效的。重點是,這個庫的各種函數、語法,整個就一MATLAB,特別簡單好用……自從有了它,媽媽再也不用擔心老師叫我把MATLAB的代碼轉成C++了……Python的Theano每次執行都會先產生C代碼再編譯執行. 在Linux底下的話翻開資料夾 ~/.theano 就會看到一票相應的C代碼, 抓出來用就好了
若還是想自己用C++寫的話http://viennacl.sourceforge.net/ViennaCL封裝了OpenCL, CUDA, OpenMP三個後端涵蓋AMD GPU, CUDA, 多核CPU, 三個願望一次滿足, 效率還略勝MKL等要c++加上神經網路,首選mxnet
C++矩陣運算庫推薦Eigen。
關於這個問題很全的回答,來自[StatckExchange](linear algebra)
以及OpenCV,Eigen,Armadillo的性能比較。OpenCV vs. Armadillo vs. Eigen on Linux 如果矩陣乘法做的比較多的話,Eigen比較合適。
UPDATE:有朋友提議說Eigen的效率不高,這裡是官網的Benchmark
Benchmark - Eigen單線程比較基本上跟MKL還是有的一拼的。竟然沒有Caffe,一個可以使用GPU加速的工業級C++神經網路庫
_(:з」∠)_第一個是用C++對blas和lapack的封裝,第二第三是blas,lapack的在CPU上的實現,第四個是在gpu上的實現……不是一個層面上的東西……
自己寫一個不就行了
放一個我最近輪的NN
- 代碼在https://github.com/speedmancs/ML
- 相關的bloghttp://blog.csdn.net/wutongthucs/article/details/77964695
除了引入了tinyxml2解析xml配置文件外,沒有任何外部依賴庫。包括了基本的NN演算法, 包括LR, NN, RNN等,進一步打算實現下RNN + LSTM,CNN。不過都是CPU上的運算,以後為了效率可能會加入GPU支持。
如果只是為了學習而用C++實現神經網路,應該還是可行的,神經網路的訓練並沒有用到什麼高深的線性代數演算法,比如求矩陣特徵值,LU分解,矩陣求逆。基本上就是加減乘除,
完全可以自己輪一個簡單的矩陣庫。
MATLAB吧,都有現成的
推薦閱讀:
※如何評價 Caffe2go?
※caffe用別人的model和prototxt測試,batch_size如何選擇?
※如何在torch7上增加一個新的層?
※萬元深度學習電腦如何配置?
TAG:機器學習 | C | 神經網路 | 深度學習DeepLearning |