BP神经网络控件1.0 测试版 欢迎使用和下载
源代码在线查看: 如何使用神经网络控件.txt
BP神经网络控件1.0 测试版
作者 何晓昀
更多信息请访问 www.hexiaoyun.net.cn
如果您有什么意见和建议,请发邮件到 hexymail@tom.com
BP神经网络控件1.0 是为了满足神经网络计算而设计的神经网络控件。
VC 调用该控件的方法如下 (该方法在Visual studio 2005 测试过)
1 打开 visual studio 2005,选用给予对话框方式创建一个MFC 项目(例如 bptest)
在这个过程中,visual studio 会自动建立一个 bptest的目录
2 将 bp.h bp.dll 和 bp.def 文件拷贝到 bptest 目录下
3 打开项目菜单下的 bptest属性对话框,在配制属性下找到链接器下的输入,在其下的附加依赖项中加入 bp.def
4 在解决方案下添加 bp.h
5 在#include bp.h 添加bptestdlg.h, 同时定义神经网络指针 CBP *bpnn;
6 在bptestdll.cpp 的 CbptestDlg::OnInitDialog() 下 添加
bpnn = new CBP;
bpnn->create(3,3,1); // 创建一个有 3 个输入变量,隐含层有3个神经元,输出层为 1 个变量的网络
7 在对话框中 分别设置 训练网络、运行网络、保存网络、读取网络和输出网络详细参数 5 个按钮
8 在训练网络按钮相对性的程序段中输入以下代码
// 训练样本
float in1[3] = {1.0,0.0,1.0}; // 输入样本 1
float target1[1] = {1.0}; // 目标样本 1
float in2[3] = {0.0,1.0,1.0}; // 输入样本 2
float target2[1] = {0.0}; // 目标样本 2
double a1,a2; // 定义隐含层误差和输出层误差
for( int i=0; i {
// 训练样本 1
bpnn->read_input(in1);
bpnn->read_target(target1);
bpnn->train(&a1,&a2);
// 训练样本 2
bpnn->read_input(in2);
bpnn->read_target(target2);
bpnn->train(&a1,&a2);
}
9 在运行网络按钮程序段中输入
// 定义输出结果变量
CString str;
// 以样本 1 作为测试对象
float in1[3] = {1.0,0.0,1.0};
float target1[1] = {1.0};
// 定义输出结果
float output[1];
bpnn->read_input(in1);
bpnn->feedforward();
bpnn->get_output(output);
// 显示输出结果
str.Format(_T("output1 = %f\n"),output[0]);
AfxMessageBox(str);
10 在保存网络程序段中输入
// 保存到 C 盘根目录下
bpnn->save_net("c:\\net.txt");
11 读取网络程序段中输入
// 从 C 盘根目录下读取文件
bpnn->load_net("c:\\net.sav");
12 输出详细网络详细参数程序段中输入
// 将网络权值参数写入到 C 盘根目录
bpnn->detail("c:\\detail.txt");
输出样本如下:
detail.txt 神经网络控件由何晓昀编写 更多信息请访问 www.hexiaoyun.net.cn
本版本为测试板,矩阵最后一位数据以*号表示,正式版中提供全部数据
输入层的神经元个数: 3
隐含层的神经元个数: 3
输出层的神经元个数: 1
输入层权值矩阵大小为 4 * 4
-1.000000 -0.008483 -0.008502 ************
-0.999982 -2.848365 -2.848154 ************
-0.999975 1.839903 1.839662 ************
-0.999978 -0.008484 -0.008499 ************
隐含层权值矩阵大小为 4 * 2
-0.999997 ************
-0.999996 ************
-0.999970 ************
-0.999996 ************