我正在编程神经网络,我有以下问题: 我有2个类:Perceptron和NeuralNetwork,在NeuralNetwork中我写了这个C' tor:
//First Layer initialization
for (int i=0; i<100;i++) {
Perceptron p = new Perceptron(true);
Information temp = new Information(1,null);
p.v.addElement(temp);
// p.v.elementAt(i).setWeight(1);
layer1.addElement(p);
}
//Second Layer initialization
for (int i=0;i<70;i++) {
Perceptron p = new Perceptron(false);
for (int j=0; j<100;j++) {
double t = 0;
while ((t = r.nextDouble()) == 0);
Information tmp=new Information(t, layer1.elementAt(j));
p.v.addElement(tmp);
}
layer2.addElement(p);
}
//Third Layer initialization
for (int i=0;i<5;i++) {
Perceptron p = new Perceptron(false);
for (int j=0;j<70;j++) {
double t = 0;
while ((t = r.nextDouble()) == 0);
Information tmp=new Information(t, layer2.elementAt(j));
p.v.addElement(tmp);
}
layer3.addElement(p);
}
在Perceptron中,C&C;托尔是:
public Perceptron(boolean inpt)
{
isInput=inpt;
}
我正在尝试运行此功能(在NeuralNetwork中):
public double[] exituteNet(int [][]in)
{
//Translate m*n matrix to m*n array
double [] inputArr=new double[in.length*in[0].length];
for(int i=0,count=0;i<in.length;i++)
for(int j=0;j<in[0].length;j++)
{
inputArr[count]=in[i][j];
count++;
}
for(int i=0;i<layer1.size();i++)
{
layer1.elementAt(i).input.setElementAt(inputArr[i], 0);
}
for(int i=0;i<layer2.size();i++)
{
for(int j=0;j<layer1.size();j++)
layer2.elementAt(i).input.setElementAt(layer1.elementAt(j).output(), j);
}
for(int i=0;i<layer3.size();i++)
{
for(int j=0;j<layer2.size();j++)
layer3.elementAt(i).input.setElementAt(layer2.elementAt(j).output(), j);
}
double[]res= new double[layer3.size()];
for(int i=0;i<res.length;i++)
res[i]=layer3.elementAt(i).output();
return res;
}
我从这一行开始获得了大量的ArrayOutOfBoundsException
:
layer1.elementAt(i).input.setElementAt(inputArr[i], 0);
我还尝试将NeuralNetwork初始化(第一层功能)更改为:
for (int i=0; i<100;i++) {
Perceptron p = new Perceptron(true);
p.v.elementAt(i).setWeight(1);
layer1.addElement(p);
}
我也在这里得到ArrayOutOfBoundsException
。
* input,v是Perceptron类中的向量
我不知道该怎么做,我很乐意帮忙