Github 项目推荐 | ANSI C 的简单神经网络库

Genann是一个经过精心测试的库,用于在 C 中训练和使用前馈人工神经网络(ANN)。它的主要特点是简单、快速、可靠和可魔改(hackable),它只需要提供一些必要功能和一点额外功能就能实现这些。

Github 链接:

https://github.com/codeplea/genann

特点:

  • ANSI C 没有依赖关系。
  • 包含在单个源代码和头文件中。
  • 简单。
  • 快速且线程安全。
  • 易于扩展。
  • 实施反向传播训练。
  • 兼容其他训练方法(经典优化,遗传算法等)
  • 包括示例和测试套件。

根据 zlib 许可证发布 - 几乎可以免费使用。

构建:

Genann 自包含在两个文件中:genann.c 和 genann.h。要使用 Genann,只需将这两个文件添加到项目中即可。

源代码中包含四个示例程序。

  • example1.c - 使用反向传播在XOR函数上训练ANN。
  • example2.c - 使用随机搜索在XOR函数上训练ANN。
  • example3.c - 从文件加载并运行ANN。
  • example4.c - 使用反向传播在IRIS数据集上训练ANN。

快速示例:

我们创建了一个带有 2 个输入的 ANN,具有 1 层 3 个隐藏神经元,并提供 2 个输出。 它具有以下结构:

然后,我们使用反向传播对一组标记数据进行训练,并要求它在测试数据点上进行预测:

#include "genann.h"

/* Not shown, loading your training and test data. */
double **training_data_input, **training_data_output, **test_data_input;

/* New network with 2 inputs,
 * 1 hidden layer of 3 neurons each,
 * and 2 outputs. */
genann *ann = genann_init(2, 1, 3, 2);

/* Learn on the training set. */
for (i = 0; i < 300; ++i) {
    for (j = 0; j < 100; ++j)
        genann_train(ann, training_data_input[j], training_data_output[j], 0.1);
}

/* Run the network and see what it predicts. */
double const *prediction = genann_run(ann, test_data_input[0]);
printf("Output for the first test data point is: %f, %f\n", prediction[0], prediction[1]);

genann_free(ann);

这个例子是为了展示 API 的用法,它没有展示出良好的机器学习技巧。在实际应用程序中,您可能希望以随机顺序学习测试数据。您还需要监控学习以防止过度拟合。

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-07-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

教程 | 如何在浏览器使用synaptic.js训练简单的神经网络推荐系统

3874
来自专栏数据科学与人工智能

【Python语言】Scikit-learn 快速入门

环境 ubuntu 12.04, 64 bits python 2.7 sklearn 0.14 准备 sklearn 快速入门的官方文档7。这个文档主要描述机...

3036
来自专栏YoungGy

ML基石_9_LinearRegression

linear regression problem linear regression algorithm 优化问题 求梯度 算法 generalization...

2496
来自专栏数据小魔方

R语言可视化——REmap(路径图)

今天紧接昨天的内容,跟大家分享如何使用REmap函数制作路径图。 路径图所需要的数据结构非常简单,两列数据,左侧是起点,右侧是终点,并且每一行的终点是下一行的起...

3715
来自专栏ATYUN订阅号

人脸图像识别实例:使用Keras-MXNet在MXNet模型服务器上部署“笑脸检测器”

AWS最近宣布发布了针对Keras 2的Apache MXNet后端,与使用多GPU的默认后端相比,它可以为你提供高达3倍的速度提升。它可以改进训练和推理性能。...

2032
来自专栏程序生活

斯坦福tensorflow教程(四) 贪婪执行Eager Execution

1655
来自专栏机器之心

开源 | 深度安卓恶意软件检测系统:用卷积神经网络保护你的手机

选自GitHub 机器之心编译 参与:Panda 恶意软件可以说是我们现代生活的一大威胁,为了保护我们电子设备中的财产和资料安全,我们往往需要寻求安全软件的帮助...

3027
来自专栏数据小魔方

excel数据转置——一维表与二维表之间的转化!

今天跟大家分享excel数据转置——一维表与二维表之间的转化! ▽ 我们在做数据搜集整理的时候 通常会遇到要将原始数据做转置处理 如下图案例所示 ? 这是一张典...

4425
来自专栏AI研习社

Github 项目推荐 | 用 JavaScript 实现的神经网络 —— brain.js

不过,一般的开发者应该都不会用神经网络来实现异或的功能吧,所以这里有一个更加实际的例子:训练一个神经网络来识别颜色对比 https://brain.js.org...

1732
来自专栏ATYUN订阅号

【实践操作】 在iOS11中使用Core ML 和TensorFlow对手势进行智能识别

在计算机科学中,手势识别是通过数学算法来识别人类手势的一个议题。用户可以使用简单的手势来控制或与设备交互,让计算机理解人类的行为。 这篇文章将带领你实现在你自己...

5336

扫码关注云+社区

领取腾讯云代金券