我无法理解反向传播算法,如何使用delta更新权重。任何人都可以帮助我吗?

时间:2017-01-02 13:34:10

标签: java

输入第一个隐藏层

            for(int j=0;j<hiddenNeuronInLayer;j++)
             {
                for(int k=0;k<inputNeuron;k++)
                {
                    netInput[j]+=input[k]*weight[count];
                    count++;

                }
                netInput[j]+=bais[0];
                hiddenOutput[0][j]=(1/(1+Math.exp(-netInput[j])));
             }

for Encoder

             for(int j=1;j<hiddenLayer;j++)
             {
                 for(int k=0;k<hiddenNeuronInLayer;k++)
                 {
                    for(int p=0;p<hiddenNeuronInLayer;p++)
                    {
                         netInput[k]+=hiddenOutput[j-1][p]*weight[count++];
                         //System.out.println(count);
                    }
                    netInput[k]+=bais[j];
                    hiddenOutput[j][k]=(1/(1+Math.exp(-netInput[k])));
                 }

             }

for Decoder

         int layer=hiddenLayer-1;
             while(layer>0)
             {
                 for(int k=0;k<hiddenNeuronInLayer;k++)
                 {
                    for(int p=0;p<hiddenNeuronInLayer;p++)
                    {
                         netInput[k]+=hiddenOutput[layer][p]*weight[count++];
                         //System.out.println(count);
                    }
                    netInput[k]+=bais[layer-1];
                    hiddenOutput[layer-1][k]=(1/(1+Math.exp(-netInput[k])));
                 }
                 layer--;
             }

用于输出图层

         for(int j=0;j<outputNeuron;j++)
             {
                 for(int k=0;k<hiddenNeuronInLayer;k++)
                 {
                     output[j]+=hiddenOutput[layer][k]*weight[count++];
                     //System.out.println(count);
                 }
                 output[j]+=bais[layer];
                 output[j]=(1/(1+Math.exp(-output[j])));
              }

我正在编写autoencoder的这段代码。在前馈网络后,我无法使用反向传播算法。

0 个答案:

没有答案