资源简介
在计算机上训练,将训练后的参数给单片机,单片机来仿真,之前已经在stm32f4上成功仿真过
代码片段和文件信息
#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 = 80000;
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)
{
netwo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 50176 2018-12-28 00:26 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\.suo
文件 2129920 2018-12-28 00:26 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 00:05 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\ipch\AutoPCH\9c48a7e196fdc380\MAIN.ipch
文件 2949120 2018-12-28 00:04 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 00:16 shenjingwangluo\shenjingwangluo\.vs\shenjingwangluo\v15\ipch\AutoPCH\edf55c5fcdcbf066\BPSIM.ipch
文件 66560 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.exe
文件 417580 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.ilk
文件 643072 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.pdb
文件 13411 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\BPNetwork.c
文件 2794 2018-12-27 23:15 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
文件 997 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\data.txt
文件 38065 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\BPNetwork.obj
文件 21862 2018-12-28 00:12 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\BPSim.obj
文件 55077 2018-12-28 00:12 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 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.log
文件 4396 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\CL.command.1.tlog
文件 10904 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\CL.read.1.tlog
文件 4084 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\CL.write.1.tlog
文件 2204 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\li
文件 4560 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\li
文件 1370 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\li
文件 230 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\shenjingwangluo.tlog\shenjingwangluo.lastbuildstate
文件 10810 2018-12-28 00:12 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\test.obj
文件 68608 2018-12-28 00:24 shenjingwangluo\shenjingwangluo\shenjingwangluo\Debug\vc141.idb
............此处省略31个文件信息
- 上一篇:C语言银行业务
- 下一篇:自动解决智能拼图,A*算法+生成可解拼图C++
相关资源
- 自动解决智能拼图,A*算法+生成可解
- C语言银行业务
- 计算机二级C语言机考题库
- 拼音分割算法
- 数据结构C语言版第二版严蔚敏-课后答
- C语言程序设计教程第二版习题解答与
- C语言openssl库SM2-SM3国密常用函数
- C语言解析精粹源代码
- 赋值语句翻译c语言实现四元式
- MH背包密码算法算法原理与实现
- c语言实现bch编码
- opengl的立方体消隐算法
- 粒子群算法及其代码实现
- 单片机C语言与PROTUES仿真技能实训
- EAN13条码生成(C语言+VS2010)[包含EA
- 椭圆曲线ECC加密解密算法的c语言实现
- C++数值算法 C数值算法 的随书代码
- C语言学生成绩管理信息系统
- C语言解析精粹(第二版)书和光盘源
- 张平OpenCV算法精讲基于python和C++教材
- 汽车加油行驶问题 C++算法实现
- 航空客运订票系统 c语言 数据结构作
- 井字棋 α-β剪枝算法
- 语法分析c语言实现程序代码+实验报告
- RAR密码暴力破解(含源码 C语言实现)
- 关键路径的算法源代码
- C语言自动走迷宫程序代码
- 朴素贝叶斯算法C语言实现,来自网络
- LL1语义分析的C语言子集编译器
- C语言电梯调度算法
评论
共有 条评论