📄 net.java
字号:
package structure;
/**
* 神经网络中的一个网络类
* */
public class Net {
public Layer layers[]; //隐层和输出层,0是隐层
//public double[] output; //
public Net(){
//inLayer=new double[Parameter.getInstance().nodeNum[0]];
layers =new Layer[Parameter.getInstance().nodeNum.length-1];
Parameter para=Parameter.getInstance();
for(int i=0;i<layers.length;i++){
layers[i]=new Layer(para.nodeNum[i+1],para.nodeNum[i],para.func[i+1]);
//layers[i]=new Layer(para.nodeNum[i+1],para.nodeNum[i],para.func[i+1],i);
if(layers[i].neurons==null)
System.out.println("hello");
}
}
/**
* 计算一个网络的输出
* in 神经网络的输入
* @return 可以是多输出的网络,针对一次输入计算结果
* */
public double[] compute(double in[]){
double[] r;
if (in.length!=Parameter.getInstance().nodeNum[0]){
System.out.println("输入值的个数不对!");
System.exit(1);
}
r=in;
for(int i=0;i<layers.length;i++){
if (layers[i].neurons==null)
System.out.println("Q");
r=layers[i].compute(r);
}
return r;
}
private double[] getInput(double[] in){
double[] out=new double[in.length-1];
for(int i=0;i<in.length;i++){
out[i]=in[i+1];
}
return out;
}
/**
* 返回网络的输出
* */
public double[] getOutput(){
int n=layers.length;
return layers[n-1].output;
}
/**
* 打印网络的权重
* */
public void printWeight(){
int numoflayer=layers.length;
for(int i=0;i<numoflayer;i++){
for(int j=0;j<layers[i].num;j++){
System.out.println("b="+layers[i].neurons[j].bias);
for(int k=0;k<layers[i].neurons[j].weight.length;k++)
System.out.println("w="+layers[i].neurons[j].weight[k]);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -