创建VS工程使用神经网络库——FANN
编译:
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的更多相关文章
- 开源的c语言人工神经网络计算库 FANN
这年头机器学习非常的火,神经网络算是机器学习算法中的比较重要的一种.这段时间我也花了些功夫,学了点皮毛,顺便做点学习笔记. 介绍人工神经网络的基本理论的教科书很多.我正在看的是蒋宗礼教授写的<人 ...
- maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程。
注:本文来源于:杨四郎2018 <maven的安装.路径配置.修改库文件路径和eclipse中的配置.创建maven工程> 一.maven的安装 首先,先到官网去下载maven.这里是官 ...
- iOS创建子工程
实际开发中,我们可能会同时开发好几个端,比如楼主目前开发的家教平台,需要老师端,家长端,助教端三个端.有很多工具方法,或者封装的自定义控件都是可以复用的.我们就可以把公用的代码抽取出去,新建一个工程, ...
- 利用cocoapods创建基于git的私有库
上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...
- 手把手教你解决无法创建 JPA 工程的问题
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703803.html ------------------------------------ ...
- 用premake5创建lua532工程
用premake5创建lua532工程 (金庆的专栏) lua-5.3.2只有Makefile,根据readme.html中"Building Lua on other systems&qu ...
- myeclipse创建hibernate工程
1.创建数据库: from blog http://www.cnblogs.com/zhaocundang/p/9061959.html 使用navicat mysql IDE: 创建数据库 book ...
- 解决无法创建 JPA 工程的问题
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703803.html ------------------------------------ ...
- 利用cocoapods创建基于git的私有库Spec Repo
上一篇文章记录了我利用cocoapods创建基于SVN的私有库的全部过程,今天我再记录一下基于git创建的过程. 整体先说明一下创建一个私有的podspec包括如下那么几个步骤: 创建并设置一个私有的 ...
随机推荐
- ife task0003学习笔记(五):JavaScript面向对象
JavaScript 支持函数式编程.闭包.基于原型的继承等高级功能.在 Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象.而在 JavaScript 中,this ...
- 初识backbone.js
backbone,英文意思是:勇气, 脊骨,但是在程序里面,尤其是在backbone后面加上后缀js之后,它就变成了一个框架,一个js库. backbone.js,不知道作者是以什么样的目的来对其命名 ...
- webbrowser使用已过期资源的一个报错
如果webbrowser控件已更新,仍使用一个HtmlElement就会出现以下错误: 2013-12-23 17:33:48,375 [18] ERROR xx.xxx<Run>b__0 ...
- 编程进阶:Java小白的序列化Serializable接口
在之前的学习过程中,我们知道了如何使用FileInputStream输入流和FileOutputStream输出流编写程序读写文件. 下面我们来学习一下如何使用序列化和反序列化读写文件. 一.序列化 ...
- c++sizeof大全
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下.但当我总结的时候才发现,这个问题既可以简单,又可以 ...
- fireworks图片边缘化 fireworks羽化图片边缘的教程
fireworks羽化图片边缘的教程如下: 1. 打开一个图片. 2.点击“工具”面板“位图”部分的“选取框”工具.也可以选择“椭圆选取框”工具. 3.选择部分图象. 4.在属性检查器中,“边缘”项中 ...
- Ubuntu16.04安装Docker1.12+开发实例+hello world+web应用容器
本次主要是详细记录Docker1.12在Ubuntu16.04上的安装过程,创建Docker组(避免每次敲命令都需要sudo),Docker常用的基本命令的总结,在容器中运行Hello world,以 ...
- 【起航计划ObjC 001】印第安老斑鸠ObjC的幻想 ---- Ubuntu下安装并使用Obj-C
如何在最新版本的 Ubuntu下(14.10)来安装.编译Objective-C? Ubuntu已经有了对Objective-C的编译器(gobjc)的安装,因此安装gobjc的步骤可省,如果你用的U ...
- windows下使用xerces -c解析XML
windows下使用Xerces-C++解析XML 前景提要 最近工作中遇到收到的数据为xml格式的情况,考虑到xml解析应该是个很常用的功能,应该有开源的lib库可以使用,于是就在网上找了找,果然发 ...
- 面试题之----一次完整的HTTP请求过程
当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢? 以下过程仅是个人理解: 域名解析 --> 发起TCP的3次握手 --> ...