编译:

sourceforge上的FANN库带VS2010的工程,我机器上装的VS2005,用不了,愁人,只能手动创建工程了,编译不过,度娘不管用,FQ麻烦,用雅虎搜到一个工程的创建配置,调整配置试一下,果然好用,在这里备份一下:

1) 创建一个工程,可以叫"vs2005test".包含所有的库文件(.h和.c),除了这几个文件(这点很重要): floatfann.h, floatfann.c, fixedfann.h, fixedfann.c, doublefann.h , doublefann.c。
2) "工程属性 -> C/C++ -> 常规 ->附加包含目录"添加include路径。
3) 添加预处理器定义: (工程属性->C/C++ -> 预处理器 -> 预处理器定义)
_CRT_SECURE_NO_WARNINGS
_USRDLL
FANN_DLL_EXPORTS
WIN32
_WINDOWS
_DEBUG
_CRT_SECURE_NO_DEPRECATE
4) 配置 工程属性 -> 常规 -> 配置类型 = 动态库 (.dll)
5) 编译.ok!

测试:

调试的话,再建个控制台工程,包含该dll和库,添加main.cpp,测试代码如下:

#include
<stdio.h>

#include
"floatfann.h"

int
main()

{

printf("Please Enter Command:(\"t\":Train,\"c\":Calculate,\"v\":Verification.)\n");

char
c = getchar();

if('t' == 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 = 1024;

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, "train.data", max_epochs, epochs_between_reports, desired_error);

fann_save(ann, "test.net");

fann_destroy(ann);

}

else
if('c' == c)

{

fann_type *calc_out;

fann_type
input[2];

struct
fann *ann = fann_create_from_file("test.net");

input[0] = 1;

input[1] = 1;

calc_out = fann_run(ann, input);

printf("xor test (%f,%f) -> %f\n", input[0], input[1], calc_out[0]);

fann_destroy(ann);

}

else
if('v' == c)

{

struct
fann *ann = fann_create_from_file("test.net");

struct
fann_train_data *data = fann_read_train_from_file("verification.data");

fann_reset_errstr(reinterpret_cast<struct
fann_error *>(ann));

for (int
i=0;i != data->num_data;i++)

{

fann_test(ann,data->input[i],data->output[i]);

}

printf("Mean Square Error:%f\n",fann_get_errno(reinterpret_cast<struct
fann_error *>(ann)));

fann_destroy(ann);

}

return 0;

}

神经网络是个神马?

我理解这种BP神经网络跟生物神经网络完全是两回事,这里的神经网络只是从生物神经网络得到灵感,创建的一种计算机识别技术,通过对训练样本的分析总结出一个分类方法(约等于拟合函数),然后将输入代入方法求解,此神经网络适用于计算机分类识别等难于用查表、函数拟合等方法实现的领域,比如图像识别,神经网络计算量巨大,2000年前火过一阵,不过随着互联网泡沫一起淹没了,最近换了个更厚的马甲叫深度学习,由于物理硬件性能以及云计算的兴起,这种极耗计算资源的软件方法回归了。

还能干啥?

想用它来做机床误差补偿。

创建VS工程使用神经网络库——FANN的更多相关文章

  1. 开源的c语言人工神经网络计算库 FANN

    这年头机器学习非常的火,神经网络算是机器学习算法中的比较重要的一种.这段时间我也花了些功夫,学了点皮毛,顺便做点学习笔记. 介绍人工神经网络的基本理论的教科书很多.我正在看的是蒋宗礼教授写的<人 ...

  2. maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程。

    注:本文来源于:杨四郎2018  <maven的安装.路径配置.修改库文件路径和eclipse中的配置.创建maven工程> 一.maven的安装 首先,先到官网去下载maven.这里是官 ...

  3. iOS创建子工程

    实际开发中,我们可能会同时开发好几个端,比如楼主目前开发的家教平台,需要老师端,家长端,助教端三个端.有很多工具方法,或者封装的自定义控件都是可以复用的.我们就可以把公用的代码抽取出去,新建一个工程, ...

  4. 利用cocoapods创建基于git的私有库

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

  5. 手把手教你解决无法创建 JPA 工程的问题

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703803.html ------------------------------------ ...

  6. 用premake5创建lua532工程

    用premake5创建lua532工程 (金庆的专栏) lua-5.3.2只有Makefile,根据readme.html中"Building Lua on other systems&qu ...

  7. myeclipse创建hibernate工程

    1.创建数据库: from blog http://www.cnblogs.com/zhaocundang/p/9061959.html 使用navicat mysql IDE: 创建数据库 book ...

  8. 解决无法创建 JPA 工程的问题

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703803.html ------------------------------------ ...

  9. 利用cocoapods创建基于git的私有库Spec Repo

    上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...

随机推荐

  1. TD不换行 nowrap属性

    表格table的td单元格中,文字长了往往会撑开单元格,但是如果table都不够宽了,就换行了好像(不要较真其他情况,我只说会换行的情况).换行后的表格显得乱糟糟,不太好看,我不喜欢这样的换行.当然可 ...

  2. wex5新增数据库

    首先是要打开Wex5   (这是废话,下面进入正题..) 1.第一步,找到界面中的 ”窗口” 点击打开,你会看到一个 “ 首选项 ”按照流程也要打开 (囧),,,,,,,,看图为重 2.当你打开了 “ ...

  3. Bootstrap入门(第一天)

    一直都想认真的学习一下Bootstrap,但是由于种种原因,一直没有行动,虽然期间有使用过Bootstrap,但是都没有系统的学习过.最近工作室(学校老师的工作室)安排了一个前端任务让我跟进,主要是根 ...

  4. 【学习笔记】HTML基础:使用html制作网页

    一.初识HTML 1.什么是HTML? Hyper Text Markup Language(超文本标记语言) 扩展XML:Extendsible  Markup Language(可扩展性标记语言) ...

  5. 彻底消除wine中文乱码,QQ,kugoo等等....

    原文链接:http://forum.ubuntu.org.cn/viewtopic.php?t=290155 lendylongli wine下中文的配置方案步骤:1. 初始设置运行 winecfg, ...

  6. C++里创建 Trie字典树(中文词典)(三)(联想)

    萌新做词典第三篇,做得不好,还请指正,谢谢大佬! 今天把词典的联想做好了,也是比较low的,还改了之前的查询.遍历等代码.  Orz 一样地先放上运行结果: test1 ID : char : 件 w ...

  7. PAT 1056 Mice and Rice

    #include <cstdio> #include <climits> #include <cstdlib> #include <vector> #i ...

  8. js简单时分秒倒计时

    效果: javascript: <script type="text/javascript"> function countTime() { //获取当前时间 var ...

  9. Python爬虫之requests模块(1)

    一.引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃 ...

  10. The nineteenth day

    Twinkle,twinkle,little start! 闪烁,闪烁,小星星 How I wonder what you are, 我想知道你是什么 Up above the world so hi ...