资源简介
这是修改了bug的版本,目前已经在stm32f407zgt6上、msp430F5529上仿真过。
代码片段和文件信息
#include“BPNetwork.h“
#include
#include“rand.h“
#include
#include
//////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////优化日记/////////////////////////////////////
//1、增加动量项
//2、学习速率可调
struct netnode **network=NULL;//神经网络的节点参数二维动态数组
struct netnode **network0 = NULL;//神经网络的节点参数二维动态数组
int *nodes_all=NULL;
int layer_all=0;
long maxepoch;
float xminmax[ROW_X][2];
float yminmax[ROW_Y][2];
float momentum_w=0;//增加动量项
float momentum_b = 0;//增加动量项
float mseerror = 0;//误差
float error0 = 100000;//上一个误差0
float speed = 0.1;//学习速率
float rate_w = 0.00;//动量项系数
float rate_b = 0.00;//动量项系数
float rate_w0 = 0.9;//动量项系数
float rate_b0 = 0.9;//动量项系数
float rate_up = 0.00001;//学习速率上升速率
float rate_down =0.001;//学习速率下降速率
void networkTrain(float x[ROW_X][COL_X] float y[ROW_Y][COL_Y] int layer int nodes[] int mode1)
{
//首先,建立神经网络节点
if (netSetup(ROW_X layer nodes ROW_Y))
{
// error(“网络节点建立失败“);
}
//然后,初始化参数
if (netInit())
{
// error(“网络参数初始化失败“);
}
//数据预处理,映射
minmax(x yxminmaxyminmax mode1);
//然后进入迭代求解
maxepoch = 8000;
netSolve(x y maxepoch 0.01 mode1);
//输出参数
if (OutPut())
{
printf(“输出参数失败\n“);
}
else
{
printf(“输出参数成功\n“);
}
//释放内存
if (freeNet())
{
printf(“内存释放失败\n“);
}
else
{
printf(“内存释放成功\n“);
}
}
//网络参数初始化
int netInit(void)
{
int i = 0 j = 0k=0;
for (i = 0; i < layer_all; i++)
{
for (j = 0; j < nodes_all[i]; j++)
{
network[i][j].b = random() / 65535.0 - 0.5;
network[i][j].b_change = random() / 65535.0 - 0.5;
network0[i][j].b_change = 0;
if (i != layer_all - 1)
{
network[i][j].w = (double*)malloc(sizeof(double)*nodes_all[i + 1]);
network0[i][j].w = (double*)malloc(sizeof(double)*nodes_all[i + 1]);
network[i][j].w_change = (double*)malloc(sizeof(double)*nodes_all[i + 1]);
network0[i][j].w_change = (double*)malloc(sizeof(double)*nodes_all[i + 1]);
}
}
}
for (i = 0; i < layer_all; i++)
{
for (j = 0; j < nodes_all[i]; j++)
{
if (i != layer_all - 1)
{
for (k = 0; k < nodes_all[i + 1]; k++)
{
network[i][j].w[k] = random() / 65535.0 - 0.5;;
network[i][j].w_change[k] = random() / 65535.0 - 0.5;
network0[i][j].w_change[k] = 0;
}
}
}
}
return 0;
}
//神经网络建立结构节点函数
//输入参数,输入层节点个数num_x,隐含层层数layer,隐含层每层节点数nodes,以及输出层节点数num_y
int netSetup(int num_x int layer int nodes[] int num_y)
{
int i = 0;
network = (struct netnode**)malloc(sizeof(struct netnode*)*(layer + 2));//申请行数
network0 = (struct netnode**)malloc(sizeof(struct netnode*)*(layer + 2));//申请行数
for (i = 0; i < layer + 2; i++)
{
if (i == 0)
{
network[i] = (struct netnode*)malloc(sizeof(struct netnode)*num_x);//申请每行列数
network0[i] = (struct netnode*)malloc(sizeof(struct netnode)*num_x);//申请每行列数
}
else if (i == layer + 1)
{
networ
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 63488 2018-12-28 22:48 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\.suo
文件 2129920 2018-12-28 22:48 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\Browse.VC.db
文件 327680 2018-12-13 13:29 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\ipch\AutoPCH\45445be9c13c68a2\RAND.ipch
文件 2424832 2018-12-28 22:44 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\ipch\AutoPCH\9c48a7e196fdc380\MAIN.ipch
文件 2949120 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\ipch\AutoPCH\9cacd736fe3b2c0f\BPNETWORK.ipch
文件 1966080 2018-12-27 23:25 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\ipch\AutoPCH\b6fefd1a23a5a56d\TEST.ipch
文件 2883584 2018-12-28 22:46 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\ipch\AutoPCH\edf55c5fcdcbf066\BPSIM.ipch
文件 422400 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.exe
文件 2020100 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.ilk
文件 2142208 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.pdb
文件 13468 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\BPNetwork.c
文件 2795 2018-12-28 22:46 shenjingwangluo\shenjingwangluo\shenjingwangluo\BPNetwork.h
文件 4335 2018-06-10 16:06 shenjingwangluo\shenjingwangluo\shenjingwangluo\BPSim.c
文件 766 2018-12-27 23:25 shenjingwangluo\shenjingwangluo\shenjingwangluo\BPSim.h
文件 8331 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\data.txt
文件 38120 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\BPNetwork.obj
文件 21862 2018-12-28 00:12 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\BPSim.obj
文件 1882071 2018-12-28 22:28 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\main.obj
文件 3809 2018-12-28 00:12 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\rand.obj
文件 1561 2018-12-28 00:12 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.Build.CppClean.log
文件 2077 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.log
文件 4396 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\CL.command.1.tlog
文件 11248 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\CL.read.1.tlog
文件 5624 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\CL.write.1.tlog
文件 2204 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\li
文件 4386 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\li
文件 1370 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\li
文件 230 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\shenjingwangluo.lastbuildstate
文件 10810 2018-12-28 22:28 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\test.obj
文件 68608 2018-12-28 22:39 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\vc141.idb
............此处省略31个文件信息
相关资源
- 平面刚架有限元程序C语言完整版
- 汉字取模软件----单片机使用必备
- 算法_C语言的实现完整版
- pcm转换成wav
- C语言解惑—指针、数组、函数和多文
- 缩短循环码(2616)编译码程序-C语言
- [纯C语言 + Win32 API]一步一步写个围棋
- FFT算法c语言代码
- C语言实现的航空售票系统
- 数据结构C语言版期末考试试题(有答
- 通达信day格式文件转换含港股和基金
- 基于51单片机射频RFID卡考勤上课上班
- 简单通讯录C语言实现
- C语言数据结构银行客户排队
- RC522射频模块读取S50卡中信息并通过
- C语言实现栈操作
- c语言难点分析整理,C语言
- C语言斗地主源代码
- 多远线性回归方程C语言程序
- c语言斗地主
- C语言实现的银行家算法 做了界面
- 数据结构与C语言综合习题集
- C语言进阶源码---基于graphics实现图书
- filtfilt C语言实现,可直接运行验证
- 用C语言实现一个火车站的订票系统
- C语言通讯录管理系统彩色界面
- AES-128-CBC算法C语言源码已经修改,可
- c语言课程设计-职工信息管理系统-单
- C语言考研真题汇编完整版.txt
- 飞机票订购系统C语言课程设计报告全
评论
共有 条评论