2015-05-30 107 views
1

我试图使一个神经网络锯齿状排列,这是给我一个出界失误......ArrayIndexOutOfBoundsException异常三维阵列

int[] sizes = { 
    layer1, layer2, layer3 
}; 
int k = sizes.length - 1; 
double[][][] net = new double[k][][]; 
int i; 
for (i = 0; i < k; i++) 
    net[i] = new double[sizes[i]][]; 
for (int j = 0; j < sizes[i]; j++) 
    net[i][j] = new double[sizes[i + 1]]; 

Y的net[x][ ][y]大小应该等于大小为net[x+1][y][ ]

我在纸上做过,我认为这会奏效。

+0

你试过调试你的程序吗? – CKing

+2

哪条线路发生故障,错误究竟是什么? (并且请格式化您的代码以使其更具可读性)顺便说一句,您真的没有大括号吗?如果是这样,那就是问题... –

+0

@ NateCook3不知道你想要达到什么,因为我不知道'layer1','layer2'和'layer3'是什么。看到我的答案,你为什么得到一个'ArrayIndexOutOfBoundsException'。 – CKing

回答

1
int[] sizes = { 
    layer1, layer2, layer3 
}; 
int k = sizes.length - 1; 

所以,k等于2

int i; 
for (i = 0; i < k; i++) 
    net[i] = new double[sizes[i]][]; 

之后环路i等于2

for (int j = 0; j < sizes[i]; j++) 
    net[i][j] = new double[sizes[i + 1]]; 
          ^^^^^^^^^^^^ 
          ArrayIndexOutOfBoundsException 

臂架,sizes[i + 1]抛出ArrayIndexOutOfBoundsException,由于sizes仅具有索引0 ,1和2,你指的是sizes[3]