Repository files navigation
LKYDeepNN
可訓練的深度類神經網路 (Deep Neural Network) 函式庫。
輕量,核心部份只依賴 C++11 標準函式庫,低相依性、好移植,方便在嵌入式系統上使用。
訓練視覺化程式以 OpenCV 撰寫,但 LKYDeepNN 本身不依賴 OpenCV。
繪圖功能僅以 function pointer 傳入物件中,在訓練過程中呼叫。
下面這2張圖 ↓ ↓ ↓ ↓ 是 33fps 的 GIF,分別是 classification 和 regression。如果不會動的話,請按 F5 重新整理網頁,或是單獨對圖檔另開新視窗就可以看到動畫了。
std::vector<int>(8,7) 8個隱藏層,每層都是7個節點,還可以再高,只要記憶體夠大的話。
std::vector<int>{5,5,6,6} 4個隱藏層,每層節點數分別是:5個、5個、6個、6個。
LKYDeepNN::LKYDeepNN(9, std::vector<int>{4,8}, 7) 代表輸入點9個、2個隱藏層分別是4節點和8節點,最後輸出層有7個節點。
目前只能 Fully-Connected,未來會考慮實作 Dropout-Connected 或 Fuzzy-Connected
LKYDeepNN::SetActivation( 隱藏層 , 輸出層 )
LKYDeepNN::SetActivation( new Tanh() ,new Linear() ) //回歸推薦使用
LKYDeepNN::SetActivation( new ReLU() ,new Softmax() ) //分類推薦使用
目前已經有: SeLU, ReLU, Tanh, Softmax, Sigmoid, Linear
可以繼承 abstract class Activation 自由實作任意活化函數
void LKYDeepNN::Training(double learningRate, int epochs, std::vector<vector<double>> trainData)
每一筆資料都需要先整理成 std::vector<double>
std::vector<vector<double>> 就是很多筆資料,這個才能餵給模型。
Xavier initialization
He initialization
可保存和讀取的 Weights 和 Biases
更豐富得測試資料集
Cross Entropy BP(測試中)
Hinge Loss Function(努力中)
Early Stopping
L1 & L2 Regularization
Copy Constructor
資料正規化工具
更多活化函數。
訓練過程中可自適應的動態 Learning Rate
Weights 分析工具
Convolution Layer
由 贊助上班時間產出。
About
Low dependency(C++11 STL only), good portability, header-only, deep neural networks for embedded
Topics
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.