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行代码中的微小神经网络库