tinn
1.0.0

TINN(微小的神經網絡)是C99中編寫的200條依賴性神經網絡庫。
有關如何學習手寫數字的演示,請獲取一些培訓數據:
wget http://archive.ics.uci.edu/ml/machine-learning-databases/semeion/semeion.data
make; ./test
培訓數據包括緩慢而迅速地書寫的手寫數字。數據集中的每一行都對應於一個手寫數字。每個數字的大小為16x16像素,為神經網絡提供256個輸入。
在第10行的末尾,數字表示手寫數字:
0: 1 0 0 0 0 0 0 0 0 0
1: 0 1 0 0 0 0 0 0 0 0
2: 0 0 1 0 0 0 0 0 0 0
3: 0 0 0 1 0 0 0 0 0 0
4: 0 0 0 0 1 0 0 0 0 0
...
9: 0 0 0 0 0 0 0 0 0 1
這為神經網絡提供了10個輸出。測試程序將輸出每個數字的精度。對於正確的數字,預期超過99%的精度,而其他數字的精度為0.1%。
便攜式 - 在存在C99或C ++ 98編譯器的情況下運行。
乙狀結腸激活。
一個隱藏的層。
TINN永遠不會比C標準庫更多。
TINN非常適合嵌入式系統。在功能強大的台式機上訓練模型,然後將其加載到微控制器上,並將模擬使用對數字轉換器進行模擬來預測實時事件。
TINN源代碼始終小於200行。 TINN標頭外的功能受到外部錫的XT名稱空間的保護。
錫可以很容易地用一些獨創性進行多線程,但主分支將保持單線螺紋以幫助開發嵌入式系統。
TINN不會播種隨機數生成器。不要忘記自己。
始終將輸入數據供電。每次訓練迭代後再次洗牌。
通過退火來獲得更高的培訓準確性。例如,將學習率乘以0.99每個培訓迭代。這將使一個良好的學習最小值零。
錫是極簡主義的做法。
TINN不是像Kann或Genann這樣的完全特色的神經網絡C庫:
https://github.com/attractivechaos/kann
https://github.com/codeplea/genann
Rust: https://github.com/dvdplm/rustinn
使用TINN NN和CTYPES的教程
200行代碼中的微小神經網絡庫