ACCORDs深度神经学习如何运作?

时间:2016-04-12 16:20:28

标签: c# neural-network

当我尝试从ACCORDs工具箱运行DeepNeuralLearning时出错。它运行时我的运行方式是:

var inputs = new double[3][];
        inputs[0] = new double[] {1, 2, 3};
        inputs[1] = new double[] {1, 2, 3};
        inputs[2] = new double[] {1, 2, 3};

        var classes = new[] {0, 1, 2};
        var outputs = Tools.Expand(classes, -1, 1);
        var network = new DeepBeliefNetwork(3, 4, 3, 2);
        var teacher = new DeepNeuralNetworkLearning(network)
        {
            Algorithm = (ann, i) => new ParallelResilientBackpropagationLearning(ann),
            LayerIndex = network.Layers.Length - 1
        };

        var error = teacher.RunEpoch(inputs, outputs);

然而,当我调整代码以接受输入的21 x 30,000矩阵和输出的5 x 30000矩阵时,它给了我一个索引超出范围的例外。这很奇怪,因为我做的是更改矩阵大小。我尝试更改隐藏图层的数字,但没有解决。任何人都有任何想法,我做错了什么?

double[][] inputs;
        int[] classes;
        var outputsList = Outputs(out inputs, out classes);
        GetPerformanceOfStock(outputsList, inputs, classes);
        //reclassify as 0 -4
        for (var i = 0; i < classes.Length; i++)
        {
            classes[i] = classes[i] - 1;
        }
        //mean subtract
        for (var i = 0; i < inputs.Length; i++)
        {
            var avg = inputs[i].Average();
            for (var j = 0; j < inputs[i].Length; j++)
            {
                inputs[i][j] = inputs[i][j] - avg;
            }
        }
        var outputs = Tools.Expand(classes, -1, 1);
        //SPLIT INTO TEST AND TRAINIG DATA
        var trainingIndex = (int) Math.Floor(.1*inputs.Length);
        var fullsize = inputs.Length;
        var trainingInputs = new double[trainingIndex][];
        var trainingOutputs = new double[trainingIndex][];
        for (var i = 0; i < trainingIndex; i++)
        {
            trainingInputs[i] = inputs[i];
            trainingOutputs[i] = outputs[i];
        }
        var testingInputs = new double[fullsize - trainingIndex][];
        var testingOutputs = new double[fullsize - trainingIndex][];
        var counter = 0;
        for (var i = fullsize - 1; i >= trainingIndex; i--)
        {
            testingInputs[counter] = inputs[i];
            testingOutputs[counter] = outputs[i];
            counter++;
        }
        //Inmitialize network
        var network = new DeepBeliefNetwork(inputs.Length, 400, 3, 2);
        //var network = new DeepBeliefNetwork(new BernoulliFunction(), trainingInputs.Length, 50, 25, 10);
        var teacher = new DeepNeuralNetworkLearning(network)
        {
            Algorithm = (ann, i) => new ParallelResilientBackpropagationLearning(ann),
            LayerIndex = network.Layers.Length - 1
        };
        teacher.RunEpoch(inputs, outputs);

0 个答案:

没有答案