📄 bp.cpp
字号:
#include "bp.h"
#include "bp_learnfunction.h"
void BPLearnProc(double xArray[][DIMX], double yArray[][DIMY], int theDimLearn, double referArray[][MAXDIMREFER][MAXDIMREFER] )
{
double incReferArray[RANK][MAXDIMREFER][MAXDIMREFER];//BP网络的系数增量矩阵
double e[RANK][MAXDIMREFER];//bp网络的梯度矩阵
double out[RANK][MAXDIMREFER];//BP网络的各层输出
int step;
double error;
step = 0;
out[0][0] = 1;
Random( referArray );//随机化网络的系数矩阵
Zero( incReferArray );//使增量矩阵各值为零
do
{
error = 0;
for( int learn = 0; learn < theDimLearn; learn++ )
{
for( int dimXA = 1; dimXA <= DIMX; dimXA++ )//第一层输出为输入x
out[0][dimXA] = xArray[learn][dimXA - 1];
for( int rankA = 1; rankA < RANK; rankA++ )//求解第二层与第三层的输出
GetTheOut( rankA, referArray, out );
for( int rankB = RANK-1; rankB > 0; rankB--)
GetTheErr( rankB, referArray, out, e, yArray, learn );//反向计算梯度
for( int rankC = 1; rankC <RANK; rankC++ )
ModifyRefer( rankC, referArray, out, e, yArray, incReferArray );
error += GetThePowE( yArray, out, learn );//求解指标函数值
}
}
while( error >= PE && ++step < 5000);//指标函数满足要求或学习5000次时退出
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -