java不确定使用什么值来初始化我的神经网络
/**
* Loads data from a file for training/test purposes.
* Separator is comma + possible whitespace or just whitespace.
* @param filename - the name of a text file that contains
* a list of patterns/targets.
* For each pattern, the list of inputs
* for that pattern followed by the list
* of outputs.
* @param inputs - 2D array into which input patterns are
* place. First index is pattern number,
* second is input index. The length of
* this array must not be longer than the
* number of patterns in the file.
* @param targets - array into which targets are placed.
*/
public static void loadData(String filename,
double[][] inputs,
double[][] targets) {
if (inputs.length != targets.length)
throw new IllegalArgumentException(
"Different number of patterns inputs/targets.");
int numPatterns = inputs.length;
int inputLength = inputs[0].length;
int targetLength = targets[0].length;
File inFile = new File(filename);
try {
Scanner sc = new Scanner(inFile);
sc.useDelimiter("[,\\s]\\s*");
for(int k = 0; k < numPatterns; k++){
for(int i = 0; i< inputLength; i++)
inputs[k][i]= sc.nextDouble();
//System.out.println(sc.next());
for(int j = 0; j < targetLength; j++)
targets[k][j] = sc.nextDouble();
}
} catch (IOException e) {
System.err.println(e);
System.exit(1);
}
}
我面临的问题是,javadoc对我来说并不清楚。我不知道“模式编号”是什么,也不知道“输入索引”是什么
我正在读取的文件是表单中的CSV列表
47100,27,81,57,37,26,0,0,23,56,53100,90,40,98,8。前16位是平面上的x,y坐标,第17位是他们应该画的数字
我会在“输入”字段中输入什么,在“目标”字段中输入什么
# 1 楼答案
这些都是神经网络的标准输入
将神经网络看作两组矩阵:激活和权重。输入为2D阵列;一个维度的大小等于激活的第一层,另一个维度是你有多少个训练项目。目标就是目标空间;它的尺寸必须与输出层的大小(在激活时)以及训练样本的数量相等
这将有助于为你使用网络的目的提供一些背景信息,并始终发布你收到的错误。我的怀疑是,在这条线的某个地方,你会因为尺寸不匹配而得到一个矩阵乘法错误,因为你没有按照上面描述的方式对齐
注意,这种描述并不适用于所有网络,只适用于MLP及其衍生物(多层PERPTRONS——基本的前馈-反馈传播机器)
这是我能找到的最好的图像(这不太好——我不喜欢权重也可能是矩阵时以线的形式显示)——看看网络前端的激活必须如何与输入对齐?同样,从图表上看,这一点并不明显,它们通常被设计成看起来更像神经学,而不是数学,但我希望这有助于澄清问题
请在评论后编辑,以保持清晰
“维度”是矩阵中行或列中的项目数。它与矩阵中的任何值都无关——你可以在空闲时选择这些值。矩阵就是一个嵌套数组。所以:输入中的行数应该是网络起始层的激活数;输入中的列数应为样本数(或反转,取决于轴)
隐藏层可以是任何你想要的。提示:现在把它拿出来,只有在你调整的时候才放进去
我强烈建议在开始使用这些工具之前多读一些书——它们很酷,但只会变得更难:)通读源代码,了解工作原理,做教程,钻研文献,等等