/*
* 创建日期 2008-11-16
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
/**
* @author xxzxxz
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class Util_xxz {
public static int I=2,M=4,L=1;
public static double land=0.1,thi=0.6;
public static double wji[][]=new double[M][];
public static double wji_b[][]=new double[M][];
public static double wkj[][]=new double[L][];
public static double wkj_b[][]=new double[L][];
public static double xigk[]=new double[L];
public static double aj[]=new double[M];
public static double ak[]=new double[L];
public static void init()
{
wkj[0]=new double[]{4,0.3,1,5};
for(int i=0;i<L;i++)
{
wkj_b[i]=new double[]{4,0.3,1,5};
}
/*for(int i=0;i<M;i++)
{
wji[i]=new double[]{1,1};
}*/
wji[0]=new double[]{1,0.1};
wji[1]=new double[]{1,0.3};
wji[2]=new double[]{6.5,0.3};
wji[3]=new double[]{1.5,4.3};
wji_b[0]=new double[]{1,0.1};
wji_b[1]=new double[]{1,0.3};
wji_b[2]=new double[]{6.5,0.3};
wji_b[3]=new double[]{1.5,4.3};
/*for(int i=0;i<M;i++)
{
wji_b[i]=new double[]{0,1};
}*/
}
public static void bp(double ai[],double yk[])
{
for(int j=0;j<M;j++)
{
//middleTrainer(j,aj[j],ai);
aj[j]=f1(ai,thi,wji[j]);
}
for(int k=0;k<L;k++)
{
//outTrainer(k,yk[k],ak[k]);
ak[k]=f1(aj,thi,wkj[k]);
// System.out.println(ak[k]);
}
for(int j=0;j<M;j++)
{
middleTrainer(j,aj[j],ai);
//aj[j]=f1(ai,thi,wji[j]);
}
for(int k=0;k<L;k++)
{
outTrainer(k,yk[k],ak[k]);
//ak[k]=f1(aj,thi,wkj[k]);
// System.out.println(ak[k]);
}
}
public static void outTrainer(int k,double yk,double ak)//yk教师,ak输出,aj隐层输出
{
xigk[k]=ak*(1-ak)*(yk-ak);
//System.out.print("("+yk+":"+ak+":"+xigk[k]+")");
for(int j=0;j<M;j++)
{
double temp=wkj[k][j];
wkj[k][j]=wkj[k][j]+xigk[k]*land*aj[j]+ak*(wkj[k][j]-wkj_b[k][j]);
wkj_b[k][j]=temp;
}
}
public static void middleTrainer(int j,double aj,double ai[])//yk教师,ak输出
{
double sum=0;
for(int k=0;k<L;k++)
{
sum=sum+wkj[k][j]*xigk[k];
//System.out.print(":"+xigk[k]+":");
}
double xigj=aj*(1-aj)*sum;
//System.out.print(":"+aj+":");
for(int i=0;i<I;i++)
{
double temp=wji[j][i];
wji[j][i]=wji[j][i]+xigj*land*ai[i]+aj*(wji[j][i]-wji_b[j][i]);
wji_b[j][i]=temp;
}
}
public static double f1(double[] x,double thi,double[] w )
{
float sum=0;
for(int i=0;i<x.length;i++)
{
sum+=x[i]*w[i];
}
return 1/(1+Math.exp(-sum+thi));
}
public static double result(double ai[])//yk教师,ak输出
{
for(int j=0;j<M;j++)
{
aj[j]=f1(ai,thi,wji[j]);
}
for(int k=0;k<L;k++)
{
ak[k]=f1(aj,thi,wkj[k]);
//System.out.println(ak[k]);
}
return ak[0];
}
public static void showW()
{
int k=0;
for(k=0;k<L;k++)
{
for(int j=0;j<M;j++)
{
System.out.print(wkj[k][j]+" ");
}
System.out.println("");
}
for(k=0;k<M;k++)
{
for(int j=0;j<I;j++)
{
System.out.print(wji[k][j]+" ");
}
System.out.println("");
}
}
}
bp.rar_BP_java BP_javxxz_neural network java
版权申诉
59 浏览量
2022-09-24
00:13:54
上传
评论
收藏 5KB RAR 举报
四散
- 粉丝: 54
- 资源: 1万+
最新资源
- 程氏舞曲V4.2程氏舞曲V4.2程氏舞曲V4.2程氏舞曲V4.2
- FPGA读写 AD9708+ AD9280 ADDA实验Verilog逻辑源码Quartus工程文件+文档说明+硬件参考原理图
- 基于CH340C设计USB转TLL串口通信模块PADS 9.5设计硬件(原理图+PCB)文件.zip
- 信号与系统大作业-图像处理 实现了直接滤波法维纳滤波法最小二乘滤波法LR递归法matlab源码.zip
- php-leetcode题解之最小栈.zip
- php-leetcode题解之最长不含重复字符的子字符串.zip
- php-leetcode题解之最长公共前缀.zip
- php-leetcode题解之最小差值.zip
- php-leetcode题解之最小基因变化.zip
- php-leetcode题解之最小路径和.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈