📄 bpnet.h
字号:
//BP网络中一些函数的定义
double sigmoid(double a)
{
double b;
b=1/(1+exp(-a));
return b;
}
double train(int n1,int n2,int n3,double in1[],
double out1[], double out2[], double w1[][], double w2[][], double t[])
{
double df1[n2];
double df2[n3];
double s2[n3];
double s1[n2];
double w[n2][n3];
double m[n2][n3];
double a=0.01;
int x=0;
int i;
int j;
int k;
for(i=1;i<=n3;i++){ //计算敏感度,更新权值
df2[i]=1;
s2[i]=-2*(t[i]-out2[i]);
for(j=1;j<=n2;j++){
w2[i][j]=w2[i][j]+a*out1[j];
}
}
for(i=1;i<=n3;i++){
for(j=1;j<=n2;j++){
w[j][i]=w2[i][j];
}
}
for(j=1;j<=n2;j++){
df1[j]=(1-out1[j])*out1[j];
s1[j]=0;
for(i=1;i<=n3;i++){
m[j][i]=df1[j]*w[j][i];
s1[j]=s1[j]+m[j][i]*s2[i];
}
}
for(j=1;j<=n2;j++){
for(k=1;k<=n1;k++){
w1[j][k]=w1[j][k]+a*s1[j]*in1[k];
}
}
if(x=0){
return w1[n2][n1];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -