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