12種算法解決MNIST
最近突然有一個想法,用儘可能多的算法來做一個任務。最後選擇了做最經典的MNIST。
簡單梳理了一些算法,包括機器學習的,深度學習的,寬度學習的等等,其實還有很多,日後再慢慢往上添加吧。所有的算法都是簡單的調用或者實現,沒有經過任何的優化。
先上GitHub。
博客之後我會對有些代碼做詳細解釋。
1.ML
像這些很多的機器學習算法,使用起來都是很簡單的,也沒有什麼太多要說的。
1.1 SVM
1.2 DecisionTree
1.3 RandomForest
1.4 KNearestNeighbors
1.5 Adaboost
1.6 XGBoost
1.7 catboost
1.8 lgbm
2.DL
2.1 使用numpy搭建的四層神經網絡
這個是僅使用numpy來搭建的全連接神經網絡,效果還不錯。如果再優化,應該會更好。
2.2 CNN(VGG16)
CNN是做圖像問題最好的方法了,cnn的模型也是太多了,這裏就挑了一個經典的vgg。
2.3 LSTM
LSTM本來是做時序數據的,但是用在圖像上也不是不行,雖然效果不是十分好。一起來也是很簡單的,把圖像的每一行作爲一個元素,行與行之間當作時序關係來處理就行了。
2.4 BLS
這個算是一個比較小衆的寬度學習,我有一篇博客介紹寬度學習,之後有時間的話我會加上帶增量學習的bls。