首页 > 系统相关 >C++builder中的人工智能(29):如何在Windows项目中导入FANN库

C++builder中的人工智能(29):如何在Windows项目中导入FANN库

时间:2024-11-14 20:18:34浏览次数:3  
标签:xor builder 29 C++ fann num input FANN ann

这篇文章旨在使用由Steffen Nissen开发的FANN库实现人工神经网络。FANN库支持20多种编程语言,包括Delphi和C++ Builder。您可以在FANN的官方网站上找到完整信息和文档,并下载FANN的源文件。

步骤:

  1. 下载FANN库

    • 从Nissen的官方网站下载FANN库包(http://leenissen.dk),包含二进制文件、cmake文件、数据集、示例和src文件夹中的源代码。
  2. 创建C++ Builder应用程序

    • 添加一个高度为32像素的面板(Panel1)和两个按钮(TEST, TRAIN)到面板中。将面板对齐到Form1的底部。添加一个Memo(Memo1)到表单中,作为我们的可视化输出位置。
  3. 创建FANN_Test文件夹

    • 将所有项目文件以“FANN_”前缀保存在这个文件夹中。
  4. 添加源文件

    • 从FANN库包中复制“src”文件夹到FANN_Test文件夹中。在RAD Studio/C++ Builder/Delphi IDE中,将src文件夹拖到“FANN_Project1.exe”的Project Manager上。
  5. 包含FANN头文件

    • 在IDE菜单中,转到项目 -> 选项 -> C++编译器 -> 目录和条件 -> 包含文件搜索路径。添加FANN_Test文件夹中的“src/include”文件夹。
  6. 添加头文件

    • 在FANN_Unit1.cpp中,添加#include “floatfann.h”
  7. 测试项目

    • 通过项目 -> 构建所有项目菜单构建所有项目。如果成功,则所有步骤正确。如果有错误,请检查上述步骤。
  8. 训练FANN

    • 双击TRAIN按钮,添加训练代码,例如使用xor.data文件训练神经网络,并将训练好的网络保存为"xor_float.net"。
      /* --- TRAINING FANN (from the simple_train.c) --- */
       
      	const unsigned int num_input = 2;
      	const unsigned int num_output = 1;
      	const unsigned int num_layers = 3;
      	const unsigned int num_neurons_hidden = 3;
      	const float desired_error = (const float) 0.001;
      	const unsigned int max_epochs = 500000;
      	const unsigned int epochs_between_reports = 1000;
       
      	struct fann *ann = fann_create_standard(num_layers, num_input, num_neurons_hidden, num_output);
       
      	fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
      	fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
       
      	fann_train_on_file(ann, "xor.data", max_epochs, epochs_between_reports, desired_error);
       
      	fann_save(ann, "xor_float.net");
       
      	fann_destroy(ann);
       
      	Memo1->Lines->LoadFromFile("xor_float.net");
       
      	Memo1->Lines->Add("Training done on xor_float.net file as above");

  9. 测试FANN

    • 双击TEST按钮,添加测试代码,加载"xor_float.net"网络,并进行测试。
      /* ---- TESTING FANN (from the simple_test.c) ----*/
      	char s[255];
       
      	fann_type *calc_out;
      	fann_type input[2];
       
      	struct fann *ann = fann_create_from_file("xor_float.net");
       
      	input[0] = -1;
      	input[1] = 1;
      	calc_out = fann_run(ann, input);
       
      	Memo1->Lines->Add("");
      	Memo1->Lines->Add("Testing ... ");
      	sprintf(s, "xor test (%f,%f) -> %f\n", input[0], input[1], calc_out[0]);
      	Memo1->Lines->Add(s);
      	Memo1->Lines->Add("Testing Done ! ");
       
      	fann_destroy(ann);

注意事项:

  • 如果您要为其他编译器编译,请不要忘记像上面那样将“src/include”添加到其项目选项中。
  • 请检查FANN库的示例、其他命令和选项,以了解其机制。

通过遵循这些步骤,您可以在C++ Builder Windows项目中成功导入和使用FANN库。这将使您能够利用FANN库的强大功能,为您的机器学习项目构建和训练人工神经网络。

标签:xor,builder,29,C++,fann,num,input,FANN,ann
From: https://blog.csdn.net/caridle/article/details/143752456

相关文章

  • C++builder中的人工智能(27):如何将 GPT-3 API 集成到 C++ 中
    人工智能软件和硬件技术正在迅速发展。我们每天都能看到新的进步。其中一个巨大的飞跃是我们拥有更多基于自然语言处理(NLP)和深度学习(DL)机制的逻辑性更强的AI聊天应用。有许多AI工具可以用来开发由C、C++、Delphi、Python等编程语言驱动的AI。本文将解释如何在C++Builder中使用......
  • C++builder中的人工智能(28):FANN: Fast Artificial Neural Networks快速人工神经网络(ANN
    这篇文章全面介绍了快速人工神经网络(ANNs)的世界,探讨了它们在现代计算智能中的重要地位、核心特点、应用领域以及未来发展。快速人工神经网络库(FastArtificialNeuralNetworkLibrary,简称FANN)是一个免费的开源神经网络库,它使用C语言实现了多层人工神经网络,并支持全连接和稀疏......
  • c++简介
    C++是一种面向对象的程序设计语言,它是在C语言的基础上发展起来的。C++拥有C语言的特性,例如高性能、底层控制和直接内存访问等,同时还添加了面向对象编程的特性,比如封装、继承和多态等。由于这些特性,C++在软件开发中非常灵活和强大。C++的应用非常广泛,它可以用于开发各种类型的......
  • 告别头文件,编译效率提升 42%!C++ Modules 实战解析
    编者按:AlibabaCloudLinux(简称“Alinux”)是目前阿里云上占比第一的操作系统。2021年,龙蜥以Alinux产品为基础发布了AnolisOS8正式版。本文中,阿里云智能集团开发工程师李泽政以Alinux为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个C++模......
  • Rust和C++在游戏开发过程中会有怎样的区别,快来看看吧,有具体案例哦!!!
    Rust作为一种系统级编程语言,以其性能、安全性和并发处理能力著称,在游戏开发中找到了越来越多的应用场景。首先说一下Rust在游戏开发的场景应用有哪些以下是Rust在游戏开发中的几个主要应用方向:1.游戏引擎开发Amethyst:这是一个完全用Rust编写的游戏引擎,专注于易用性......
  • 区块反转c++
    代码#include<iostream>#include<vector>usingnamespacestd;structnode{  intdata,next;}A[100001];vector<int>L,ans,E[100001];ints,n,a,t,k,mark,cnt,c;intmain(){  cin>>s>>n>>k;  for(......
  • C++玩转物联网:认识树莓派Pico
     在嵌入式编程的领域中,树莓派Pico、Arduino和ESP32都是广受欢迎的微控制器开发板,但它们在性能、功能和编程语言支持上各有特点。树莓派Pico是树莓派基金会推出的一款高性价比开发板,搭载了RP2040微控制器,支持标准的C++库,在初学者和爱好者中迅速流行。本文将带您了解树莓派Pico......
  • 【C++】STL--queue、deque、priority的模拟实现和应用
    目录1、queue的介绍1.2queue的常规操作 2、queue的模拟实现 3、priority_queue(优先级队列)的介绍和实现3.1priority_queue的使用 3.2 priority_queue的应用 3.3 priority_queue的模拟实现4、deque4.1deque的原理介绍4.2deque的缺陷4.3 为什么选择deque作......
  • 代码随想录算法训练营第三十天| 452. 用最少数量的箭引爆气球 、435. 无重叠区间 、76
    452.用最少数量的箭引爆气球思路:以前做过最大不相交子序列的题,这次也是往这根据某一端排序的思路想的,排序后如下图,只需要维护一个公共序列的右边界r就可以了,下一次判断时,只需要判断子区间的左边是否小于r。这个题有点坑的是使用Arrays排序,如果使用昨天的方法:Arra......
  • C++ 编程基础(5)类与对象 | 5.8、面向对象五大原则
    文章目录一、面向对象五大原则1、单一功能(SingleResponsibilityPrinciple,SRP)2、开放封闭原则(Open/ClosedPrinciple,OCP)3、里氏替换原则(LiskovSubstitutionPrinciple,LSP)4、接口隔离原则(InterfaceSegregationPrinciple,ISP)5、依赖倒置原则(DependencyInversio......