matlab --概率神经网PNN与广义回归神经网络GRNN

PNN

PNN用来分类

前面部分完全一样,后面是做点LW,是每列一个样本,有几类就会有几行, 每列中有一个1元素其他都是0,1元素所在行表示第几类

所以Lw a1 之后等于每个样本按权a1进行累计,然后对列向量a2( K行)进行compet,compet选择列向量中最大的元素为1,其他设置成0, 输入结果类似[0  0  1 ]^T 即 是第3类

ind2vec([1  2  4  5  2  3]) ,里面可以看成每列属于一个分类有5个分类(第4个元素是5),第一个样本属于分类1,第2个样本属于分类2, 那么进行ind2vec后,就变成5行(对应5个分类)

6列(对应6个样本)的one-hot矩阵了

GRNN

类似RBF,不需要训练,IW存储就是训练--每行一个样本(注意函数输入时是每列一个样本)

前Layers{1}跟RBF完全一样,矩阵LW2.1每列对应训练样本的目标值,1行表示只有一个输出,2行就是2个输出

nprod就是点乘--内积,但是结果回除以sum(ai) ,数学定义是:z = w*p/sum(p),考虑训练目标值是 Lw=[1  2  3 1] --4个样本,1个输出

经过第一层后的向量a1=[ 0   0  1  0]^T ---即完全接近第3个样本,2个做nprod后结果就是3

当然实际情况可能是a1=[0.1  0.2  0.8   0.11]^T  除以sum(a1)后 是[0.08  0.16  0.66 0.09], Lw a1/sum(a1)  结果也是2.47,nprod看成各样本结果按接近程度做为权重进行累加

并且权重之和是1(除以sum(a1)导致的)

所以GRNN,做分类时需要取下整--分类编号1,2,3  。。。N,如果N比较大的话似乎会造成问题

原文地址:https://www.cnblogs.com/wdfrog/p/12909113.html