我正在尝试为神经网络制作一个锯齿状数组,这给了我一个超出范围的错误......
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]];
net[x][ ][y]
中y的大小应等于net[x+1][y][ ]
的大小。
我是在纸上做的,我认为这样可行。
答案 0 :(得分: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
只有{1}}的索引,而你指的是sizes[3]
。