如何用c++在mnist上實現一個簡單的卷積神經網路,有哪些參考資料?

rt,想用c++實現一個簡單的卷積神經網路,目前能找到的代碼都是matlab的,主要想通過實現理解一下卷積,pooling,backpropagation的實現方式。


1.Caffe workshop 材料, Lecture 3重點看看。

http://courses.cs.tau.ac.il/Caffe_workshop/Bootcamp/pdf_lectures/

2.Notes on Convolutional Neural Networks,怎麼計算都有。

http://cogprints.org/5869/1/cnn_tutorial.pdf

3.還是關於如何求導,需翻牆,不過slideshare的app是不用翻也可以看的。

http://www.slideshare.net/kuwajima/cnnbp

4.上面重點關注的CNN特特殊層的求導問題,經典的層以及損失函數可見PRML第5章。

5.github上有個簡潔的純C++實現 nyanp/tiny-cnn · GitHub 代碼我沒看過,不過似乎和問題的要求比較相似,可供參考。從應用的角度看BVLC/caffe · GitHub等之類的框架的代碼更實用,其代碼文檔中有演算法的說明結合代碼看很不錯Caffe: Class List。

6.既然想動手寫一個,挺不錯的,完全弄明白後看其他的框架的實現代碼應該很容易了。


補充,用過樓上建議的nyanp/tiny-cnn · GitHub和BVLC/caffe · GitHub。

看過tiny-cnn的源碼,對於理解單純的CNN實現,個人覺得tiny-cnn更精簡一些,3000行純C++11的實現,例子里包含了幾種經典的NN結構,自帶mnist的demo。作者也比較nice,樂於解答問題。


自己用matlab實現了一個,先實現一層的,然後兩層的,然後任意層的

github:

一層:sunshineatnoon/Single-Layer-CNN-on-MNIST · GitHub

二層:sunshineatnoon/Two-Layer-CNN-on-MNIST · GitHub

任意層:sunshineatnoon/Convolutional-Neural-Network · GitHub

blog:【Deep Learning】CNN的MATLAB實現

歡迎交流和指正~


看了看已給的答案,我給你些鏈接吧,全是純C++的版本,eblearn是Yann lecun維護的,現在已不在維護了

http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi

http://www.codeproject.com/Articles/140631/Convolutional-Neural-Network-MNIST-Workbench

http://conv-net.sourceforge.net/doc/

http://www.convolutional.net/doku.php?id=software

http://eblearn.sourceforge.net/


Andrew Ng的教程


正在斷斷續續的寫,歡迎監督(怕半路寫不下去了)。。。

GitHub - xylcbd/EasyCNN

UPDATE:完工了。


題主最後寫出來了嗎?


使用Caffe挺好的---- 配置文件很容易編寫,只要準備了數據就可以訓練,同時指出CPU和GPU兩種mode

已經有挺多的model可以直接參考使用


推薦閱讀:

如何看待《Deep Learning without Poor Local Minima》?
RBF神經網路和BP神經網路有什麼區別?
卷積神經網路和深度神經網路的區別是什麼?
神經網路中激活函數的真正意義?一個激活函數需要具有哪些必要的屬性?還有哪些屬性是好的屬性但不必要的?
在眾多的神經網路框架如chainer, caffe, torch,mxnet等之間如何做選擇?

TAG:C | 神經網路 | 深度學習DeepLearning |