1个不稳定版本

0.4.0 2021年4月25日

#528 in Machine learning

Apache-2.0

29KB
559 代码行,不含注释

siarne

一个用于快速模拟人工神经元的库。

网络

网络是一圈神经元,其中每个神经元都与其自身和其他0个或多个相邻的神经元相连。
在每个 tick 时,每个神经元的输入(32位有符号整数)与其阈值进行比较,如果大于阈值,则神经元将其效果(8位有符号整数)添加到其连接端点的神经元输入。

网络参数是效果、阈值和提取输入和输出的神经元索引。有调整这些参数的实用工具(训练),目前仅实现了进化策略。

优化

主要的评估代码是自动向量化,因此在许多平台上应该运行得非常快。
例如,在i7-4790上运行的network_tick基准测试在4096个神经元和每个神经元1024个连接的情况下,每个tick大约需要370微秒。
如果使用target-cpu=native运行基准测试,则每个tick的时间将下降到大约200微秒。

目前评估代码是单线程的,未来的工作包括研究单个网络内的多线程机会。

对于训练代码,性能被认为不那么重要,例如,随机数质量优先。

依赖项

~1.3–2MB
~35K SLoC