有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    这些都是神经网络的标准输入

    将神经网络看作两组矩阵:激活和权重。输入为2D阵列;一个维度的大小等于激活的第一层,另一个维度是你有多少个训练项目。目标就是目标空间;它的尺寸必须与输出层的大小(在激活时)以及训练样本的数量相等

    这将有助于为你使用网络的目的提供一些背景信息,并始终发布你收到的错误。我的怀疑是,在这条线的某个地方,你会因为尺寸不匹配而得到一个矩阵乘法错误,因为你没有按照上面描述的方式对齐

    注意,这种描述并不适用于所有网络,只适用于MLP及其衍生物(多层PERPTRONS——基本的前馈-反馈传播机器)

    这是我能找到的最好的图像(这不太好——我不喜欢权重也可能是矩阵时以线的形式显示)——看看网络前端的激活必须如何与输入对齐?同样,从图表上看,这一点并不明显,它们通常被设计成看起来更像神经学,而不是数学,但我希望这有助于澄清问题

    enter image description here

    请在评论后编辑,以保持清晰

    “维度”是矩阵中行或列中的项目数。它与矩阵中的任何值都无关——你可以在空闲时选择这些值。矩阵就是一个嵌套数组。所以:输入中的行数应该是网络起始层的激活数;输入中的列数应为样本数(或反转,取决于轴)

    隐藏层可以是任何你想要的。提示:现在把它拿出来,只有在你调整的时候才放进去

    我强烈建议在开始使用这些工具之前多读一些书——它们很酷,但只会变得更难:)通读源代码,了解工作原理,做教程,钻研文献,等等