📄 perceptron.java
字号:
public class Perceptron { double x[]; //样本输入 double yd[]; //样本标准 double o[]; double o1[]; double o2[]; //输出 double w[][]; //权值 int inNum; //输入节点数 int outNum; //输出节点数 double e; public Perceptron(int inNum, int outNum) { this.inNum = inNum; this.outNum = outNum; x = new double[inNum]; //输入向量 yd = new double[outNum]; o = new double[outNum]; o1 = new double[outNum]; o2 = new double[outNum]; w = new double[inNum][outNum]; for (int i = 0; i < inNum; i++) { for (int j = 0; j < outNum; j++) { w[i][j] = 0.1 * Math.random(); } } } 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[i] = p[isamp][i]; } for (int i = 0; i < outNum; i++) { yd[i] = t[isamp][i]; } for (int j = 0; j < outNum; j++) { o[j] = 0.0; for (int i = 0; i < inNum; i++) { o[j] = o[j] + w[i][j] * x[i]; } if (o[j] > 1) { o1[j] = 1; } else { o1[j] = 0; } if (o1[j] != yd[j]) { for (int i = 0; i < inNum; i++) { w[i][j] = w[i][j] + 0.02 * (yd[j] - o1[j])*x[i]; } e += (yd[j] - o1[j]) * (yd[j] - o1[j]); } } } } public double[] sim(double psim[]) { for (int i = 0; i < inNum; i++) { x[i] = psim[i]; } for (int k = 0; k < outNum; k++) { o2[k] = 0.0; for (int j = 0; j < inNum; j++) { o2[k] = o2[k] + w[j][k] * x[j]; } if (o2[k] > 1) { o2[k] = 1; } else { o2[k] = 0; } } return o2; } //end sim}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -