Genann是一个经过精心测试的库,用于在 C 中训练和使用前馈人工神经网络(ANN)。它的主要特点是简单、快速、可靠和可魔改(hackable),它只需要提供一些必要功能和一点额外功能就能实现这些。
Github 链接:
https://github.com/codeplea/genann
特点:
根据 zlib 许可证发布 - 几乎可以免费使用。
构建:
Genann 自包含在两个文件中:genann.c 和 genann.h。要使用 Genann,只需将这两个文件添加到项目中即可。
源代码中包含四个示例程序。
快速示例:
我们创建了一个带有 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 的用法,它没有展示出良好的机器学习技巧。在实际应用程序中,您可能希望以随机顺序学习测试数据。您还需要监控学习以防止过度拟合。