没有合适的资源?快使用搜索试试~ 我知道了~
Java版神经网络.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 142 浏览量
2021-10-02
11:50:37
上传
评论
收藏 51KB PDF 举报
温馨提示
试读
20页
Java版神经网络.pdf
资源推荐
资源详情
资源评论
Rbf 神经网络算法之 JAVA 实现
package com.mfsoft.ai.algorithm.imp;
public class RbfNet extends Object {
int inNum; //输入接点数
int hideNum;// 隐含接点数
int outNum; //输出接点数
double c[][];// 重心
double d[];// 距离(歪 )
int epochs;
double x[]; //输入向量
double x1[];// 隐含接点状态值
double x2[];// 输出接点状态值
double o1[];
double o2[];
double w[][];// 隐含接点权值
double w1[][];// 输出接点权值
double rate_w; // 权值学习率(输入层 -隐含层 )
double rate_w1;// 权值学习率 (隐含层 -输出层 )
double rate_b1;// 隐含层阀值学习率
double rate_b2;// 输出层阀值学习率
double b1[];// 隐含接点阀值
double b2[];// 输出接点阀值
double pp[];
double qq[];
double yd[];
double e;
double in_rate;// 输入归一化比例系数
public RbfNet(int inNum,int hideNum,int outNum,double p[][]) {
in_rate=1.0;// 输入归一化系数
/*
double pmax=0.0;
for (int isamp=0;isamp<p.length;isamp++){
for (int i=0;i<inNum;i++)
{if (Math.abs(p[isamp] )>pmax)
pmax=Math.abs(p[isamp]);
}
}//end for isamp
in_rate=pmax;
for (int isamp=0;isamp<p.length;isamp++){
for (int i=0;i<inNum;i++)
p[isamp]=p[isamp]/in_rate;
}//end for isamp
*/
LbgNet lbg=new LbgNet(p,hideNum);
c=lbg.getc();
d=lbg.getd();
this.epochs=500;
this.inNum=inNum;
this.hideNum=hideNum;
this.outNum=outNum;
x=new double[inNum]; //
输入向量
x1=new double[hideNum];//
隐含接点状态值
x2=new double[outNum];//
输出接点状态值
o1=new double[hideNum];
o2=new double[outNum];
w=new double[inNum][hideNum];//
隐含接点权值
w1=new double[hideNum][outNum];//
输出接点权值
b1=new double[hideNum];//
隐含接点阀值
b2=new double[outNum];//
输出接点阀值
pp=new double[hideNum];
qq=new double[outNum];
yd=new double[outNum];
rate_w=0.05;//
权值学习率(输入层
-
隐含层
)
rate_w1=0.05;//
权值学习率
(
隐含层
-
输出层
)
rate_b1=0.05;// 隐含层阀值学习率
rate_b2=0.05;// 输出层阀值学习率
e=0.0;
for(int i=0;i<inNum;i++)
for(int j=0;j<hideNum;j++)
w[j]=1.0;
for(int i=0;i<hideNum;i++)
for(int j=0;j<outNum;j++)
w1[j]=1.0;
}
/**********************************/
/*****RBF
神经控制器算法训练函数
*****/
public void train(double p[][],double t[][],int samplenum){
e=0.0;
for(int isamp=0;isamp<samplenum;isamp++)//
循环训练一次样本
{
for(int i=0;i<inNum;i++)//
构造每个样本的输入和输出标准
//x=p[isamp]/in_rate;
x=p[isamp];
for(int i=0;i<outNum;i++)
yd=t[isamp];
for(int j=0;j<hideNum;j++)
{
o1[j]=0.0;
for(int i=0;i<inNum;i++)
o1[j]=o1[j]+(w[j]*x-c[j])*(w[j]*x-c[j]);
x1[j]=Math.exp(-o1[j]/(2*d[j]*d[j]));
}
for(int k=0;k<outNum;k++)
{o2[k]=0.0;
for(int j=0;j<hideNum;j++)
o2[k]=o2[k]+w1[j][k]*x1[j];
x2[k]=o2[k];
//System.out.println(String.valueOf(x2[k]));
}
//System.out.println("ok1");
for(int k=0;k<outNum;k++)
{qq[k]=(yd[k]-x2[k])*x2[k];
e+=Math.abs(yd[k]-x2[k])*Math.abs(yd[k]-x2[k]);// 计算均方差
//System.out.println(String.valueOf(e));
for(int j=0;j<hideNum;j++)
w1[j][k]=w1[j][k]+rate_w1*qq[k]*x1[j];
//System.out.println(String.valueOf(x2[0]));
}
}//end isamp
样本循环
e=Math.sqrt(e);
}//end train
/***************************************/
/*****RBF
神经控制器算法模拟计算函数
*****/
public double[] sim(double psim[]){
for(int i=0;i<inNum;i++)
//x=psim/in_rate;
x=psim;
for(int j=0;j<hideNum;j++)
{o1[j]=0.0;
for(int i=0;i<inNum;i++)
o1[j]=o1[j]+(w[j]*x-c[j])*(w[j]*x-c[j]);
x1[j]=Math.exp(-o1[j]/(2*d[j]*d[j]));
}
for(int k=0;k<outNum;k++)
{o2[k]=0.0;
for(int j=0;j<hideNum;j++)
o2[k]=o2[k]+w1[j][k]*x1[j];
x2[k]=o2[k];
}
return x2;
} //end sim
} //end RBF class
剩余19页未读,继续阅读
资源评论
资料大全
- 粉丝: 14
- 资源: 26万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功