资源简介
这是修改了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语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论