神经网络

 

      神经网络在OCR中属于很重要的算法,现在火爆的DEEPLEARNING另一个名字叫做多层神经网络.我试着把相关的知识总结一下,这篇文章先写一个最简单的实现.最简单的网络就是只有一个节点,这个节点有一个霸气的名字--感知器.下面是一段关于感知器的代码,代码虽然简单,但已经把感知器的逻辑都表现出来了.

 

double w[3] = {1,1,1};

int data[8][3] = {

    {0,0,0,}, {1,0,0},{1,0,1},{1,1,0}

    ,{0,0,1},{0,1,1},{0,1,0},{1,1,1}

};

 

int label[8] = {-1,-1,-1,-1,1,1,1,1};

 

for (int i =0; i < 100; i++)

{

    int error = 0;

    for (int n = 0; n < 8; n++)

    {

        double sum = data[n][0] * w[0] + data[n][1] * w[1] + data[n][2] * w[2];

 

        if (sum * label[n] < 0)

        {

            error++;

            //调整权重

            if(label[n] == -1)

            {

                if (data[n][0] == 1)

                {

                    w[0] -= 0.01;

                }

 

                if (data[n][1] == 1)

                {

                    w[1] -= 0.01;

                }

 

                if (data[n][2] == 2)

                {

                    w[2] -= 0.01;

                }

            }

            if (label[n] == 1)

            {

                if (data[n][0] == 1)

                {

                    w[0] += 0.01;

                }

 

                if (data[n][1] == 1)

                {

                    w[1] += 0.01;

                }

 

                if (data[n][2] == 2)

                {

                    w[2] += 0.01;

                }

            }

        }

    }

 

    if (error < 2)

    {

        break;

    }

}

 

 

 

通过判定公式来确定样本类型,通过已知样本来影响公式中参数,大部分分类模型都是这个原理,神经网络也不例外.先写这么多吧.写博文还是挺累的.还要陪老婆看琅琊榜,以后还要写收敛的原理,网络的设计,估计还能再写一篇.

 

原文地址:https://www.cnblogs.com/guopengfei/p/4865712.html