前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Github 项目推荐 | ANSI C 的简单神经网络库

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

作者头像
AI研习社
发布2018-07-26 16:45:32
5630
发布2018-07-26 16:45:32
举报
文章被收录于专栏:AI研习社AI研习社

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 个输出。 它具有以下结构:

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

代码语言:javascript
复制
#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 的用法,它没有展示出良好的机器学习技巧。在实际应用程序中,您可能希望以随机顺序学习测试数据。您还需要监控学习以防止过度拟合。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档