Neural network 利用反向传播学习技术在一个大型企业中的应用

Neural network 利用反向传播学习技术在一个大型企业中的应用,neural-network,aforge,backpropagation,Neural Network,Aforge,Backpropagation,我是神经网络新手,我正在使用一个大型神经网络库来完成字符识别任务。我想用反向传播来训练我的网络。以下是AForge文档中给出的代码 // initialize input and output values double[][] input = new double[4][] { new double[] {0, 0}, new double[] {0, 1}, new double[] {1, 0}, new do

我是神经网络新手,我正在使用一个大型神经网络库来完成字符识别任务。我想用反向传播来训练我的网络。以下是AForge文档中给出的代码

// initialize input and output values
        double[][] input = new double[4][] {
                new double[] {0, 0}, new double[] {0, 1},
                new double[] {1, 0}, new double[] {1, 1}
            };
        double[][] output = new double[4][] {
                new double[] {0}, new double[] {1},
                new double[] {1}, new double[] {0}
            };
        // create neural network
        ActivationNetwork network = new ActivationNetwork(
            SigmoidFunction(2),
            2, // two inputs in the network
            2, // two neurons in the first layer
            1); // one neuron in the second layer
        // create teacher
        BackPropagationLearning teacher = new BackPropagationLearning(network);
        // loop

        while (!needToStop)
        {
            // run epoch of learning procedure
            double error = teacher.RunEpoch(input, output);
            // check error value to see if we need to stop
            // ...
        }

但我不知道如何决定激活网络的层数和神经元数。任何帮助都将不胜感激。谢谢

我不太清楚,但在我看来,网络只能返回两个答案——0和1。所以一个神经元为0,第二层为1,第二层为XOR选择max.

你需要一个隐藏层,因为输出的真值表为0,1,1,0这意味着你不能用一条线几何地分离这些模式。。如果你可以用一条线划分模式空间,你可以使用一个感知器,典型的例子是或和。在这些情况下,您不使用隐藏层,因为它们是线性分隔的。试着制作相应的图表,以便清楚地看到和理解它。在所有情况下,如果类>2或类不是线性分隔的,则必须使用隐藏层。对于XOR,您需要一个隐藏层(隐藏层是网络的计算层),因为一个隐藏层能够划分为多个类。现在由于有两个类,我们将有一个输出。如果每次[0,1][1,1][1,0][1,1]有一个表,则可通过以下公式计算:outputNeurons0或stepFunc(σ)=0 2,//第一层有两个神经元->隐藏层 1); // 第二层的一个神经元->输出层

反向误差传播是一种无法在这里向您展示其工作原理的算法。您可以在这里查看更多详细信息

希望这有助于更好地理解简单神经元网络的整体概念,但如果你想使用这些类别的神经网络,我的观点是你必须阅读神经网络背后的理论